如何避免每次都输入 ssh-add

如何避免每次都输入 ssh-add

我阅读并遵循了一些关于如何设置ssh 代理这样我就不需要在每次 ssh 到远程机器时输入密码。

然而,在ssh 代理ssh-add,每次我重新启动 shell 时,我仍然需要这样做。ssh-add然后要求我输入密码来解锁私钥。

Enter passphrase for key '/home/xx/.ssh/id_rsa':

我不需要输入远程机器的密码,而是需要输入私钥的密码。这就像刚走出炼狱,却发现自己身处地狱。看起来 id_rsa 只是在会话中临时添加到 ssh-agent 中,因为每次我登录并输入时ssh-add -l,我都会得到:

The agent has no identities.

请问如何将密钥(id_rsa)永久存储在ssh-agent中?谢谢

编辑:这是我对 所做的ssh-agent。我将以下块附加到~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi

答案1

我已经安装了钥匙串。

sudo apt-get 安装钥匙串

如果您正在运行 bash,则需要向 .bash_profile 添加一些命令。如果您没有 .bash_profile,请在主文件夹中创建一个。添加以下几行:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

在开始一天的工作时,我会登录。当我打开终端时,系统会提示我输入一次密码。对于所有其他新终端和连接,系统不会再次要求我输入密码。

答案2

您所寻找的是不太安全的,但可以使用公钥身份验证来实现,而无需 ssh-agent。更安全的选择是使用带有密码的公钥身份验证,同时关闭 ssh 服务器上的密码身份验证,但这不是您想要的。如果您决定这样做,请参阅此答案底部的链接以获取说明。

要使用 ssh 而不要求输入任何密码,您需要生成密钥对,同时将密码字段留空。

要检查您是否已生成密钥对,请检查 ~/.ssh 目录中的文件 id_rsa 和 id_rsa.pub。如果它们已经存在,您可以删除它们或移动它们以创建新的密钥对。

请注意,如果删除它们,您将无法访问您正在使用的任何 ssh 服务器,并且如果服务器上的密码验证已关闭,则使用旧密钥进行验证。

要创建新的密钥对,请运行以下命令:

ssh-keygen -t rsa

接受密钥的默认位置并将密码留空。

要将您的公钥提供给您想要连接的 ssh 服务器,请使用以下命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

完成这些步骤后,您将能够从您正在使用的计算机无需密码登录远程服务器。

参考:http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/

答案3

前段时间,我在执行 时突然开始被要求输入密码来解锁我的 ssh 密钥git push。事实证明,要停止被要求输入密码,只需将 SSH 密钥代理(GNOME 密钥环:SSH 代理)添加到启动应用程序(在我的情况下 - 只需选中复选框):

在此处输入图片描述

相关内容