在单个会话中重复提示输入 SSH 私钥密码

在单个会话中重复提示输入 SSH 私钥密码

我在共享开发服务器上有一个 SSH 私钥,该服务器使用密码进行保护。

即使将其加载到 中ssh-agent,我也会再次提示输入私钥密码

由于某种原因,即使在我ssh-add输入私钥并正确响应密码提示后,系统随后也会提示我输入相同的私钥密码再次,当我git pull在 git 克隆中,它在同一主机名上使用相同的身份文件时。

我在登录后加载 SSH 设置,如下所示:

➜  ~ cat ~/init_ssh 
#!/usr/bin/env bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

我运行脚本并正确回答密码提示:

➜  ~ ~/init_ssh
Agent pid 11612
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

然后我在特定的存储库克隆中运行git pullor ,并且git push每一次我必须重新输入我的 SSH 密码:

➜  repository_clone git:(master) git pull
Enter passphrase for key '/home/username/.ssh/id_rsa': 
Already up-to-date.
➜  repository_clone git:(master) git pull
Enter passphrase for key '/home/username/.ssh/id_rsa': 
Already up-to-date.

主机名已IdentityFile配置在~/.ssh/config

碰巧我在我的 中将IdentityFileforgithub.com显式设置为, :~/.ssh/id_rsa~/.ssh/config

➜  repository_clone git:(master) cat ~/.ssh/config
Host github.com
    IdentityFile ~/.ssh/id_rsa

如果我删除上面的 SSH 配置条目,我仍然遇到与永久密码重新提示相同的问题。

文件权限正确

与此同时,我已经确认,目录和~文件的所有权限都是它们应该有的,根据~/.ssh~/.ssh/id_rsa本指南:

➜  ~ ls -la ~ ~/.ssh ~/.ssh/id_rsa
-rw-------  1 username username 3326 Sep 21 16:53 /home/username/.ssh/id_rsa

/home/username:
total 220
drwxr-xr-x  13 username username  4096 Sep 27 17:11 .
drwxr-xr-x  24 root     root      4096 Sep 21 16:09 ..
# [...]

/home/username/.ssh:
total 36
drwxr-xr-x  2 username username 4096 Sep 27 17:07 .
drwxr-xr-x 13 username username 4096 Sep 27 17:11 ..
-rw-r--r--  1 username username  745 Sep 21 16:43 authorized_keys
-rw-------  1 username username  455 Sep 27 17:07 config
-rw-------  1 username username 3326 Sep 21 16:53 id_rsa
-rw-r--r--  1 username username  744 Sep 21 16:53 id_rsa.pub
-rw-r--r--  1 username username 3794 Sep 26 16:28 known_hosts

我完全被难住了!有人能指出我正确的方向吗?谢谢!

答案1

您启动的代理仅对脚本可用~/init_ssh,该脚本在加载密钥后立即退出。

使用source ~/init_ssh或放入您的文件或等效文件eval "$(ssh-agent -s)"中。.profile

加载代理后,您应该拥有$SSH_AUTH_SOCK一个套接字。

相关内容