如何避免在终端启动时始终为id_rsa输入密码?

时间:2016-11-29 02:40:12

标签: bash ssh terminal ssh-keys passphrase

目前,每次启动终端时,都会收到以下提示:

  

上次登录:11月28日星期一21:32:16 ttys000

     

代理商pid 2733

     

输入/Users/my_name/.ssh/id_rsa的密码:

请您指导我如何避免每次都输入密码?

3 个答案:

答案 0 :(得分:3)

您可能已写信至~/.bashrc

`eval ssh-agent`
ssh-add

或类似的东西。这意味着它将为您打开的每个shell启动一个新的ssh-agent,这肯定不是您想要的。代理应该在您打开Xsession(~/.xsession)时启动,或者您应该在运行新代理之前检查代理是否正在运行:

[ -z $SSH_AUTH_SOCK ] && `eval ssh-agent` && ssh-add

答案 1 :(得分:3)

您可以将密码短语添加到钥匙串中

ssh-add -K ~/.ssh/id_rsa

或者您可以将其添加到~/.ssh/config中:

Host *
UseKeychain yes

答案 2 :(得分:1)

您可以使用ssh-agent。该手册页说:

  

ssh-agent是一个用于保存用于公钥的私钥的程序   authenti-        阳离子(RSA,DSA,ECDSA,Ed25519)。 ssh-agent通常是在        X会话或登录会话的开始,以及所有其他窗口或        程序作为ssh-agent程序的客户端启动。通过使用        环境变量代理可以定位并自动使用        使用ssh(1)登录其他计算机时的身份验证。

进一步阅读时,您可以看到:

  

代理最初没有任何私钥。密钥已添加   运用        SSH-添加(1)。在没有参数的情况下执行时,ssh-add(1)会添加文件        〜/ .ssh / id_rsa,〜/ .ssh / id_dsa,〜/ .ssh / id_ecdsa,〜/ .ssh / id_ed25519        的〜/ .ssh /身份。 如果身份有密码短语,则ssh-add(1)会要求        终端上的密码如果有一个或来自一个小的X11程序        如果在X11下运行。如果这两种情况都不是,那么认证        阳离子会失败。然后它将身份发送给代理。一些        身份可以存储在代理中;代理可以自动使用        任何这些身份。 ssh-add -l显示当前的标识        由代理人持有。