如何避免在终端启动时总是输入 id_rsa 的密码?
Posted
技术标签:
【中文标题】如何避免在终端启动时总是输入 id_rsa 的密码?【英文标题】:How to avoid always entering passphrase for id_rsa on terminal startup? 【发布时间】:2017-04-12 22:03:43 【问题描述】:目前每次我启动终端时都会收到以下提示:
上次登录时间:11 月 28 日星期一 21:32:16 在 ttys000
代理 pid 2733
输入 /Users/my_name/.ssh/id_rsa 的密码:
您能否指导我如何避免每次都输入密码?
【问题讨论】:
【参考方案1】:您可以将密码添加到钥匙串中:
ssh-add -K ~/.ssh/id_rsa
或者您可以将其添加到您的~/.ssh/config
:
Host *
UseKeychain yes
【讨论】:
这是 mac 特定的。它不适用于 Linux 和其他 unix 系统。【参考方案2】:您可能写信给您的~/.bashrc
行
`eval ssh-agent`
ssh-add
或类似的东西。这意味着它将为您打开的每个 shell 启动一个新的ssh-agent
,这肯定不是您想要的。当您打开 Xsession (~/.xsession
) 时,代理应该会启动,或者您应该在运行新的代理之前检查代理是否正在运行:
[ -z $SSH_AUTH_SOCK ] && `eval ssh-agent` && ssh-add
【讨论】:
完美。这行得通!你是对的,在我的 .bash_profile 我有: eval "$(ssh-agent -s)" ssh-add -K ~/.ssh/id_rsa【参考方案3】:您可以使用ssh-agent
。手册页说:
ssh-agent 是一个保存用于公钥的私钥的程序 真实的 阳离子(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 下运行。如果这些都不是,那么 authenti- 阳离子会失败。然后它将身份发送给代理。一些 身份可以存储在代理中;代理可以自动使用 这些身份中的任何一个。 ssh-add -l 显示当前的身份 由代理人持有。
【讨论】:
以上是关于如何避免在终端启动时总是输入 id_rsa 的密码?的主要内容,如果未能解决你的问题,请参考以下文章
Bitbucket 上的 Git:即使在上传了我的公共 SSH 密钥之后,也总是要求输入密码