You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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无法写入文件:

    1. 检查.ssh目录权限:
      ls -ld ~/.ssh
      
      输出应该是drwx------(权限值700),如果不是,用chmod 700 ~/.ssh修正。
    2. 检查私钥文件权限:
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:52:57