效率工具

SSH客户端与密钥管理工具推荐

推荐好用的SSH客户端和密钥管理工具,涵盖密钥生成、多服务器管理、安全配置等实用技巧。

#SSH #远程连接 #密钥管理 #服务器管理

SSH是每个程序员都要掌握的技能

不管你是连接远程服务器、推送代码到GitHub,还是部署应用,SSH都是绑不开的工具。但很多人只会ssh user@host,对SSH的高级用法知之甚少。

SSH客户端推荐

命令行客户端

客户端平台特色价格
OpenSSH全平台(内置)标准实现免费
MoshLinux/macOS断线重连免费
Eternal TerminalLinux/macOS保持会话免费

GUI客户端

客户端平台特色价格
Termius全平台+移动端跨平台同步免费/Pro $10/月
Royal TSXmacOS多协议支持$29
MobaXtermWindowsX11转发免费/Pro $69
PuTTYWindows经典老牌免费
WindTerm全平台开源免费免费
Tabby全平台现代UI免费

我推荐的方案

  • macOS用户:iTerm2 + OpenSSH + SSH Config(够用了)
  • Windows用户:Windows Terminal + OpenSSH 或 Tabby
  • 需要移动端:Termius(手机上也能SSH)
  • 多协议管理:Royal TSX(SSH + RDP + VNC统一管理)

SSH密钥管理

生成SSH密钥

# 推荐使用Ed25519算法(比RSA更安全更快)
ssh-keygen -t ed25519 -C "[email protected]"

# 如果系统不支持Ed25519,用RSA 4096
ssh-keygen -t rsa -b 4096 -C "[email protected]"

多密钥管理

为不同的服务使用不同的密钥是好习惯:

# 为GitHub生成专用密钥
ssh-keygen -t ed25519 -f ~/.ssh/github_ed25519 -C "github"

# 为工作服务器生成密钥
ssh-keygen -t ed25519 -f ~/.ssh/work_ed25519 -C "work"

# 为个人服务器生成密钥
ssh-keygen -t ed25519 -f ~/.ssh/personal_ed25519 -C "personal"

SSH Config:最被低估的效率工具

~/.ssh/config是SSH的配置文件,用好它能省掉大量重复输入。

# ~/.ssh/config

# GitHub
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_ed25519

# 工作服务器
Host work-server
    HostName 192.168.1.100
    User deploy
    Port 22
    IdentityFile ~/.ssh/work_ed25519
    ForwardAgent yes

# 生产服务器(通过跳板机)
Host prod
    HostName 10.0.0.50
    User admin
    ProxyJump jump-server
    IdentityFile ~/.ssh/work_ed25519

# 跳板机
Host jump-server
    HostName jump.example.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/work_ed25519

# 通用配置
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
    AddKeysToAgent yes
    IdentitiesOnly yes

配置好后,连接服务器只需要:

# 之前
ssh -i ~/.ssh/work_ed25519 -p 2222 [email protected]

# 之后
ssh work-server

SSH安全最佳实践

实践说明重要性
禁用密码登录只允许密钥认证必须
更改默认端口避免22端口扫描推荐
使用Ed25519比RSA更安全推荐
设置密钥密码密钥加密保护推荐
禁止root登录防止暴力破解必须
使用Fail2ban自动封禁恶意IP推荐
定期轮换密钥降低密钥泄露风险良好实践

服务器端安全配置

# /etc/ssh/sshd_config 推荐配置

# 禁用密码登录
PasswordAuthentication no

# 禁止root登录
PermitRootLogin no

# 只允许特定用户
AllowUsers deploy admin

# 修改端口
Port 2222

# 限制登录尝试次数
MaxAuthTries 3

# 设置登录超时
LoginGraceTime 30

# 使用Protocol 2
Protocol 2

SSH Agent:免去重复输入密码

SSH Agent可以缓存你的密钥密码,不用每次连接都输入。

# 启动SSH Agent
eval "$(ssh-agent -s)"

# 添加密钥到Agent
ssh-add ~/.ssh/github_ed25519
ssh-add ~/.ssh/work_ed25519

# 查看已添加的密钥
ssh-add -l

# macOS用户可以用Keychain
ssh-add --apple-use-keychain ~/.ssh/github_ed25519

SSH隧道:你的安全通道

SSH隧道是连接远程数据库、内网服务的安全方式。

# 本地端口转发:通过SSH访问远程数据库
# 本地3306 -> 远程服务器 -> 数据库服务器3306
ssh -L 3306:db-server:3306 user@remote-server

# 然后用数据库客户端连接 localhost:3306 就行了

# 动态端口转发:SSH当SOCKS代理
ssh -D 1080 user@remote-server

# 反向隧道:让远程服务器访问你的本地服务
ssh -R 8080:localhost:3000 user@remote-server

配合好的数据库管理工具,通过SSH隧道安全地管理远程数据库。

服务器管理工具

如果你管理多台服务器,光靠SSH Config可能不够。推荐这些工具:

工具类型特色
Ansible自动化运维无Agent,SSH管理
tmux终端复用会话持久化
Mosh移动Shell断线自动重连
# tmux常用命令
tmux new -s work        # 创建会话
tmux attach -t work     # 重新连接
tmux ls                 # 列出所有会话
# Ctrl+b d              # 断开会话(保持运行)

在好用的终端工具中使用SSH,体验会更好。如果你在搭建Linux开发环境,SSH是最基础的远程连接方式。

总结

SSH是程序员的基本功。掌握SSH Config、密钥管理和隧道技术,能让你的远程操作安全高效。记住两个核心原则:永远使用密钥认证永远不要把私钥泄露出去