Mac迁移后SSH连不上?揭秘ssh-add的跨平台密钥管理艺术
刚拿到新Mac的兴奋劲儿还没过,就发现原本在Windows上顺畅无比的SSH连接突然罢工了。这就像搬家后钥匙突然打不开门锁——明明钥匙没换,锁也没坏,但就是进不去。这种跨平台迁移后的SSH连接问题,十有八九都出在操作系统对密钥管理的差异上。
1. 为什么Windows能用的密钥在Mac上失效?
当你把.ssh文件夹从Windows直接复制到Mac时,表面上看所有文件都完好无损,但背后却隐藏着三个关键差异:
密钥加载机制不同
Windows的OpenSSH实现通常会自动加载默认位置的密钥(如id_rsa),而Mac的ssh客户端则更"克制"——它默认不会自动加载任何密钥,除非你明确告诉它。
bash复制# Windows常见行为(自动加载):
ssh user@server # 可能直接成功
# Mac常见行为:
ssh user@server # 报错: Permission denied (publickey)
文件权限继承问题
Unix-like系统(包括Mac)对密钥文件权限有严格要求:
| 文件类型 | 推荐权限 | Windows默认权限 | Mac需求权限 |
|---|---|---|---|
| 私钥文件 | 600 | 继承父目录 | 必须600 |
| 公钥文件 | 644 | 继承父目录 | 644即可 |
| .ssh目录 | 700 | 继承父目录 | 建议700 |
ssh-agent的默认行为差异
Windows的ssh-agent服务通常是开机自启的,而Mac虽然也有ssh-agent,但它默认不会自动加载你的密钥。这就是为什么你需要手动使用ssh-add。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ssh-add:被低估的密钥管理大师
这个看似简单的命令,实则是跨平台SSH连接的关键桥梁。它的核心作用是将密钥注入到当前会话的ssh-agent进程中:
bash复制# 基本用法(加
