SSH 最耗时的不是输入密码,而是记一堆主机名、端口、用户名、密钥路径、跳板机参数。把这些写进 ~/.ssh/config 之后,你可以用短别名一键直达;同时也更容易把常用的安全选项固定下来(比如禁止弱算法、控制转发行为等)。
macOS 自带 OpenSSH,一般不需要额外安装。建议先确认你常用的私钥路径,并给私钥设置合适权限(600)。如果你使用的是公司/团队提供的跳板机或堡垒机,提前准备好:目标主机地址、端口、用户名、是否需要跳板,以及需要使用哪把密钥。
在终端执行 mkdir -p ~/.ssh,然后编辑 ~/.ssh/config,可以从下面模板开始。把示例里的域名、用户名与密钥路径替换成你自己的。
# 全局默认:对所有主机生效 Host * ServerAliveInterval 30 ServerAliveCountMax 3 TCPKeepAlive yes # 建议显式启用密钥认证;如你有其他需求按实际调整 PreferredAuthentications publickey IdentityAgent ~/.ssh/agent.sock # 例1:一台常用服务器(自定义端口 + 指定用户名 + 指定密钥) Host prod-api HostName 203.0.113.10 User deploy Port 2222 IdentityFile ~/.ssh/id_ed25519 # 例2:走跳板机(ProxyJump) Host jump HostName jump.example.com User yourname IdentityFile ~/.ssh/id_ed25519 Host intranet-db HostName 10.0.0.25 User ops IdentityFile ~/.ssh/id_ed25519 ProxyJump jump # 例3:按域名通配(同一批机器共用配置) Host *.dev.example.com User dev IdentityFile ~/.ssh/id_ed25519写好后,你就可以直接运行:ssh prod-api、ssh intranet-db。
1) 多密钥:给不同主机指定不同 IdentityFile,避免“拿错钥匙”。
2) 多账号:同一域名不同账号时,用不同别名(例如 git-work / git-personal)分别写 User。
3) 端口转发:如果你需要端口转发(比如安全地访问内网 Web 管理页),建议显式写清楚,并在不用时删除或注释,减少遗忘带来的风险。
4) 连接稳定性:ServerAliveInterval / ServerAliveCountMax 能减少长时间操作时的断线。
1) 别名是否匹配:SSH 会按 Host 匹配规则找配置,先确认你输入的别名与通配规则命中。
2) 端口是否正确:目标端口、堡垒机端口、内网端口不要混淆。
3) 用户名是否正确:尤其是云主机默认用户(如 ubuntu、ec2-user)。
4) 密钥是否正确:检查 IdentityFile 路径、权限、以及对应公钥是否已被加入服务器。
5) DNS 与网络:能否解析域名、是否走了正确的网络(公司 VPN / 代理)。
6) 详细日志:用 ssh -v 别名 看具体卡在哪一步,再有针对性调整。
ssh_config 官方参数手册:https://man.openbsd.org/ssh_config