我想将代码添加到我的 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
以确认它要求输入密码。如果您的朋友运行它,它可能不会要求它,因为他的密钥未加密。