如何避免在终端启动时总是输入 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 密钥之后,也总是要求输入密码

Linux配置ssh

windowsXP启动时总是先到用户登录画面,本身没有密码,但是每次都要点一次才能进入windows,如何去掉?

Linux怎么把本地代码上传到远程github仓库中

如何避免SVN运行时老是输入密码

最简单的 Mac配置gitlab ssh密钥方法