我在共享开发服务器上有一个 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 pull
or ,并且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
碰巧我在我的 中将IdentityFile
forgithub.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
一个套接字。