ssh-keygen生成空白.pub文件的原因及故障排查
解决SSH公钥生成后为空的问题
这种情况我碰到过好几次,大概率是生成过程里某个细节没注意到,咱们一步步来排查修复:
确认生成命令是否正确
要生成指定名称的密钥对,必须用-f参数明确指定输出文件名,正确的命令应该是:ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_2如果没加
-f参数,只是在提示输入文件名时输入了id_rsa_2,也有可能因为交互时的误操作(比如不小心按了奇怪的组合键、中断输入流程)导致公钥文件没被正确写入。复盘生成时的交互流程
重新执行生成命令,仔细盯好每一步的输出:- 会提示你输入密码(passphrase),可以直接回车设置无密码,或者输入自定义密码
- 正常完成后,应该能看到两行关键提示:
Your identification has been saved in /home/your-user/.ssh/id_rsa_2
Your public key has been saved in /home/your-user/.ssh/id_rsa_2.pub
如果没看到这两行,说明生成过程中途失败了,得留意有没有报错信息。
检查目录与文件权限
Linux对.ssh目录和密钥文件的权限要求很严格,权限不对会导致ssh-keygen无法写入文件:- 检查
.ssh目录权限:
输出应该是ls -ld ~/.sshdrwx------(权限值700),如果不是,用chmod 700 ~/.ssh修正。 - 检查私钥文件权限:
输出应该是ls -l ~/.ssh/id_rsa_2-rw-------(权限值600),公钥文件id_rsa_2.pub应该是-rw-r--r--(权限值644),权限不对的话用chmod调整即可。
- 检查
从私钥导出公钥(应急方案)
如果私钥文件id_rsa_2存在且大小不为0,说明私钥生成成功了,只是公钥没写进去,可以直接从私钥导出公钥:ssh-keygen -y -f ~/.ssh/id_rsa_2 > ~/.ssh/id_rsa_2.pub执行完后再查看
id_rsa_2.pub,应该就能看到正常的公钥内容了。用 verbose模式排查深层问题
如果以上方法都没解决,重新生成时加上-v参数开启详细日志,能帮你定位根本问题:ssh-keygen -v -t rsa -b 4096 -f ~/.ssh/id_rsa_2日志里会显示每一步的操作细节,比如是不是磁盘空间不足、目标目录不存在等。
内容的提问来源于stack exchange,提问作者Nate Givens
相关产品推荐
相关产品推荐

