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 配置能让你在管理多台服务器时事半功倍,同时也能显著提升安全性。