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


11

我阅读并遵循了一些有关如何设置ssh代理的在线文档,这样就不必在每次ssh到远程计算机时都输入密码。

但是,在ssh-agent的帮助下,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

您是说每次登录或每次打开Shell窗口都要输入密码吗?您说您已经遵循了一些在线文档,但是ssh-agent在Ubuntu上是开箱即用的,因此您不需要做任何事情。你到底做了什么
吉尔斯(Gillles)“所以-别再作恶了”

每次ssh进入远程计算机时,我都必须输入密码。不是访问远程计算机的密码,而是解锁我的私钥(id_rsa)的密码。
ssgao

我知道这是您钥匙的密码。什么我问的是你没有设置SSH代理内容,以及是否运行ssh-add有持续时间超过shell窗口中,你在键入它的作用。
吉尔“SO-停止作恶”

效果一直持续到我退出系统(本地)为止。我把我所做的事ssh-agent放在了帖子中。
ssgao

这听起来像是正常行为:您需要在每个会话中键入一次密码来解锁密钥。如果将解锁密钥存储在某处,则会破坏在密钥上设置密码短语的目的-任何获得存储的解锁密钥的人都可以使用它。您还期待其他吗?您是否希望在注销后将密钥存储在内存中,以便在下次重新启动之前可用?
吉尔(Gilles)“所以,别再邪恶了”,

Answers:


6

我已经安装了钥匙扣。

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 ###

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


4
这与ssh-add在终端中输入有什么不同?
ssgao 2014年

是的,但是然后您每次都必须键入ssh-add……这样做将减少您的2个步骤-> eval“ $(ssh-agent)”和ssh-add
abhishek

1

您正在寻找的安全性较差,但是可以使用公共密钥身份验证来实现,而无需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/


0

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

在此处输入图片说明


您能否详细说明如何执行此操作以及为什么它可以解决相关问题,以扩大您的答案?谢谢。
字节指挥官
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.