SSH 是远程服务器管理的基石。合理的配置可以大幅提升日常使用的便利性和安全性。
SSH 密钥管理
生成密钥对
# 使用 Ed25519 算法(推荐)
ssh-keygen -t ed25519 -C "your@email.com"
# 或使用 RSA(兼容性更好)
ssh-keygen -t rsa -b 4096 -C "your@email.com"
添加密钥到 ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
SSH Config 文件
~/.ssh/config 可以让你免去记忆 IP 地址和端口的麻烦:
# 默认配置
Host *
AddKeysToAgent yes
UseKeychain yes
ServerAliveInterval 60
ServerAliveCountMax 3
# 个人服务器
Host myserver
HostName 192.168.1.100
Port 22
User ubuntu
IdentityFile ~/.ssh/id_ed25519
# GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
配置完成后,只需 ssh myserver 即可连接。
跳板机配置
当需要通过跳板机访问内网服务器时:
# 方法一:ProxyJump(推荐,OpenSSH 7.3+)
Host jump-server
HostName jump.example.com
User user
Host internal-server
HostName 10.0.1.50
User admin
ProxyJump jump-server
# 方法二:ProxyCommand(兼容旧版本)
Host internal-server-legacy
HostName 10.0.1.50
User admin
ProxyCommand ssh jump-server -W %h:%p
安全加固
# 服务端 /etc/ssh/sshd_config 推荐配置
Port 2222 # 修改默认端口
PermitRootLogin no # 禁止 root 登录
PasswordAuthentication no # 禁用密码登录
PubkeyAuthentication yes # 启用密钥登录
AllowUsers alice bob # 允许的用户白名单
MaxAuthTries 3 # 最大认证尝试次数
ClientAliveInterval 300 # 客户端超时检测
端口转发
# 本地端口转发:将本地 8080 转发到远程的 80
ssh -L 8080:localhost:80 myserver
# 远程端口转发:将远程的 9090 转发到本地的 3000
ssh -R 9090:localhost:3000 myserver
# 动态转发(SOCKS 代理)
ssh -D 1080 myserver
良好的 SSH 配置能让你在管理多台服务器时事半功倍,同时也能显著提升安全性。