无法将SSH密钥添加到ssh-agent,提示密钥文件不存在如何解决
报错核心原因
你执行sudo -s -H切换到root用户后,路径中的~会被解析为root用户的家目录/root,而你生成SSH密钥时如果是用普通用户(nulaxz)操作,密钥默认存储在/home/nulaxz/.ssh/路径下,因此在root会话中用相对路径查找会提示文件不存在。
查询本地SSH密钥存储位置
执行以下任意一种命令即可获取密钥完整路径:
- 若当前仍在root会话中,执行全局搜索命令:
find /home -name "*.pub" 2>/dev/null
返回结果中后缀为.pub的是公钥文件,对应私钥为同路径下同名且去掉.pub后缀的文件。 - 若切换回普通用户nulaxz操作,执行命令查看当前用户的所有SSH密钥:
ls ~/.ssh/
默认生成的私钥名称一般为id_rsa、id_ed25519,对应公钥为同名加.pub后缀。
正确的Git与GitHub SSH关联操作步骤
普通用户权限即可完成所有操作,无需切换root,可避免后续Git操作出现权限冲突:
- 退出当前root会话:
exit - 若未生成过SSH密钥,执行生成命令(替换为你的GitHub绑定邮箱):
ssh-keygen -t ed25519 -C "xxx@xx.com"
全程按回车即可,无需额外设置。 - 启动当前用户的ssh-agent:
eval "$(ssh-agent -s)" - 添加私钥到ssh-agent:
ssh-add ~/.ssh/你的私钥文件名
例如生成的是ed25519类型密钥,命令为ssh-add ~/.ssh/id_ed25519 - 查看公钥完整内容,复制全部内容到GitHub的SSH密钥设置页:
cat ~/.ssh/你的公钥文件名.pub - 测试连通性:
ssh -T git@github.com
返回包含You've successfully authenticated的提示即表示配置成功。
如需在root会话中添加密钥的临时解决方法
直接填写密钥的完整绝对路径即可,无需使用相对路径~,示例:ssh-add /home/nulaxz/.ssh/你的私钥文件名
内容的提问来源于stack exchange,提问作者Nulaxz
相关产品推荐
相关产品推荐

