ssh-add 总是要求输入密码 - 在 bashrc 上自动执行

ssh-add 总是要求输入密码 - 在 bashrc 上自动执行

我想将代码添加到我的 bashrc 中:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

但它总是要求

输入 /home/User/.ssh/id_rsa 的密码:

我的一个朋友将相同的代码片段添加到 bashrc 中并完美运行(无需询问密码并显示消息添加身份:/home/User/.ssh/id_rsa

我怎样才能做到这一点,我不必每次在终端上输入密码并显示身份添加的信息?

答案1

整个想法ssh-agent是让您能够添加密钥和密码一次因此,只要机器正在运行,您就不必再次输入它们。您不需要ssh-add在您的 shell 中运行bashrc- 您只需在 shell 中运行一次即可输入密码,并且只要您ssh-agent正在运行,它就会将解密的密钥保留在内存中,您无需输入再次输入密码。您只需将该eval $(ssh-agent -s)行保留在您的bashrc.

它首先要求输入密码的原因是,当您创建新的 ssh 密钥(使用ssh-keygen)时,它会要求用户输入密码。您可以将其保留为空,以表明您不想加密密钥,但如果您确实输入了密码,则以后任何时候想要使用该密钥时都必须输入它(同样,这就是确切地哪里ssh-agent派上用场)。

您和您朋友之间的区别在于您的 ssh 密钥可能受密码保护,而您朋友的密钥则不受密码保护。

作为@菲利克斯JN在评论中写道,您可以运行ssh-keygen -y -f ~/.ssh/id_rsa以确认它要求输入密码。如果您的朋友运行它,它可能不会要求它,因为他的密钥未加密。

相关内容