Bash
在單個會話中重複提示輸入 SSH 私鑰密碼
我在共享開發伺服器上有一個私有 SSH 密鑰,它用密碼保護。
即使將其載入到
ssh-agent
中,我也會重新提示輸入私鑰密碼出於某種原因,即使在我
ssh-add
使用私鑰並正確響應密碼提示之後,當我在使用相同主機名上的相同身份文件的 git clone 中時,我隨後也會再次提示輸入相同的私鑰密碼。git pull
我在登錄後載入我的 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
或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
我完全被難住了!誰能指出我正確的方向?謝謝!
您啟動的代理僅對腳本可用,該
~/init_ssh
腳本在載入密鑰後立即退出。使用
source ~/init_ssh
或放置eval "$(ssh-agent -s)"
在您的.profile
或等效文件中。載入代理後,您應該有
$SSH_AUTH_SOCK
一個套接字。