用途
本资料是一份 SSH 使用参考,面向需要管理 SSH 密钥、编辑 SSH 客户端配置、建立隧道与端口转发、通过跳板机访问内网主机,以及进行 SSH 服务端安全加固的用户。内容以命令与配置片段为主,可直接参考执行。
主要能力
密钥管理
- 生成密钥:
ssh-keygen -t ed25519 -C "your@email.com",支持自定义文件名(-f)、无口令(-N ""),以及面向旧系统的 RSA 4096。 - 修改现有密钥口令:
ssh-keygen -p -f ~/.ssh/id_ed25519。 - 查看指纹与更新注释:
ssh-keygen -lf与ssh-keygen -c。 - 复制公钥:
ssh-copy-id、手动写入authorized_keys的命令、macOS 剪贴板pbcopy。 - ssh-agent:启动、添加(含
-t超时)、列出、删除单个或全部密钥;macOS 钥匙串集成(UseKeychain、--apple-use-keychain);代理转发(ssh -A、ForwardAgent yes),并提示仅向可信主机转发。
配置文件 ~/.ssh/config
- 基本 Host 条目:
HostName、User、Port、IdentityFile、IdentitiesOnly yes。 - 通配符与默认值:
Host *、Host *.example.com、Host 192.168.1.*。 - 多 GitHub/GitLab 账号:通过
Host github.com-personal、github.com-work区分密钥,并给出git clone与git remote set-url用法。
跳板机
- ProxyJump(OpenSSH 7.3+):在配置中用
ProxyJump bastion,支持多级链式跳转,也可命令行ssh -J。 - ProxyCommand(旧版):
ProxyCommand ssh -W %h:%p bastion。
端口转发与隧道
- 本地转发
-L、远程转发-R、动态转发/SOCKS 代理-D,并说明可在配置中用LocalForward、DynamicForward定义。 - 后台隧道
ssh -f -N -L、用pkill结束、用 autossh 自动重连,以及通过跳板机访问数据库并配合psql、redis-cli。
文件传输与连接复用
- scp 上传/下载/递归;rsync 增量传输、进度、镜像、dry run、经跳板机传输。
- 复用:
ControlMaster auto、ControlPath、ControlPersist 600,以及ssh -O check/-O exit。
调试与安全
- 调试:
ssh -v/-vvv、ssh -T git@github.com、ssh -G、ssh-keygen -R清除陈旧主机密钥,并列出常见错误含义。 - 硬化:文件权限、sshd_config 选项(禁用密码登录、禁用 root 登录、改端口、限制用户、MaxAuthTries 等)、
sshd -t校验、fail2ban。 - SSH 证书:创建 CA、签发用户与主机证书、查看证书、在服务端与客户端配置信任 CA。
使用方式
资料中的命令与配置片段可直接复制到终端或写入 ~/.ssh/config、/etc/ssh/sshd_config 等文件使用。涉及服务端的改动给出了校验与重启命令:sudo sshd -t 与 sudo systemctl restart sshd。隧道与会话内操作还介绍了转义序列(如 ~. 断开、~C 添加转发)。
适用场景
- 配置邮箱、GitHub/GitLab 或多账号的 SSH 密钥。
- 为服务器、跳板机、内网主机编写 ~/.ssh/config。
- 建立到数据库、Web 服务、Redis 的隧道与端口转发。
- 通过跳板机传输文件或执行命令。
- 排查连接失败、清理主机密钥、增强 SSH 服务安全性。
限制
资料未提供与收费、平台支持范围、性能指标或效果承诺相关的信息。部分能力有版本前提,如 ProxyJump 需要 OpenSSH 7.3+;autossh 需要先通过 brew/apt 安装;fail2ban 的配置文件内容仅以简写形式给出。使用前请结合自身环境验证。