Bash

在單個會話中重複提示輸入 SSH 私鑰密碼

  • September 27, 2018

我在共享開發伺服器上有一個私有 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 pullgit 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

我完全被難住了!誰能指出我正確的方向?謝謝!

您啟動的代理僅對腳本可用,該~/init_ssh腳本在載入密鑰後立即退出。

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

載入代理後,您應該有$SSH_AUTH_SOCK一個套接字。

引用自:https://unix.stackexchange.com/questions/471893