迁移SSH密钥后Ed25519私钥自行损坏(仅存1字节)求助
迁移SSH密钥后Ed25519私钥自行损坏(仅存1字节)求助
兄弟,这种情况我之前也碰到过,大概率是Mac的Keychain在背后搞鬼!先给你分析下可能的原因和解决办法:
可能的核心原因:Keychain对SSH密钥的托管
Mac的Keychain会自动托管你添加进去的SSH私钥(比如你用过ssh-add -K命令把密钥加入Keychain),这时候系统会替换本地的私钥文件为一个仅1字节的占位符(就是你看到的那个"N"),真正的私钥内容被存在Keychain里了。你手动打包复制~/.ssh目录的时候,复制的只是这个占位符,不是真实的私钥,自然没法用。而且因为旧机器上的私钥已经被Keychain托管替换,所以旧机器上的文件也变成了1字节。
解决办法分两种情况:
情况1:旧机器的Keychain里还存着完整私钥
- 打开「钥匙串访问」(Keychain Access),在搜索框输入
ssh,找对应你的Ed25519私钥的条目(名字一般是id_ed25519或者你自定义的密钥名) - 右键这个条目,选择「导出项目」,保存格式选
.p12,设置一个导出密码(记得记下来) - 把这个
.p12文件传到新机器,同样用「钥匙串访问」导入它 - 把导入的密钥转换成OpenSSH格式的私钥:
按照提示输入之前设置的导出密码,再设置新的私钥密码(可以留空),这样就能得到正常的Ed25519私钥文件了ssh-keygen -p -f ~/.ssh/id_ed25519 -m pem
情况2:旧机器Keychain里也找不到私钥了
那只能重新生成Ed25519密钥:
ssh-keygen -t ed25519 -C "your-email@example.com"
然后把新生成的公钥(id_ed25519.pub)部署到所有需要访问的服务器的~/.ssh/authorized_keys里。
后续迁移建议
以后Mac之间迁移工作环境,尽量用系统自带的「迁移助手」,它会正确处理Keychain和SSH密钥的关联,不会出现这种手动复制的坑。
备注:内容来源于stack exchange,提问作者Loren Gilmore
相关产品推荐
相关产品推荐

