效率工具
SSH客户端与密钥管理工具推荐
推荐好用的SSH客户端和密钥管理工具,涵盖密钥生成、多服务器管理、安全配置等实用技巧。
#SSH
#远程连接
#密钥管理
#服务器管理
SSH是每个程序员都要掌握的技能
不管你是连接远程服务器、推送代码到GitHub,还是部署应用,SSH都是绑不开的工具。但很多人只会ssh user@host,对SSH的高级用法知之甚少。
SSH客户端推荐
命令行客户端
| 客户端 | 平台 | 特色 | 价格 |
|---|---|---|---|
| OpenSSH | 全平台(内置) | 标准实现 | 免费 |
| Mosh | Linux/macOS | 断线重连 | 免费 |
| Eternal Terminal | Linux/macOS | 保持会话 | 免费 |
GUI客户端
| 客户端 | 平台 | 特色 | 价格 |
|---|---|---|---|
| Termius | 全平台+移动端 | 跨平台同步 | 免费/Pro $10/月 |
| Royal TSX | macOS | 多协议支持 | $29 |
| MobaXterm | Windows | X11转发 | 免费/Pro $69 |
| PuTTY | Windows | 经典老牌 | 免费 |
| 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、密钥管理和隧道技术,能让你的远程操作安全高效。记住两个核心原则:永远使用密钥认证,永远不要把私钥泄露出去。