Bash
如何在不重新創建 SSH 代理的新實例的情況下添加 SSH 密鑰?
我在我的 .bashrc 中添加以下內容
ssh-add ~/.ssh/id_rsa
因此,當我在我的 shell/終端應用程序(macOS 上的 iTerm2)中打開一個新選項卡時,它會使用 SSH 代理自動添加 SSH 身份,我不需要在該選項卡中手動輸入 SSH 密碼。但是,如果我有很多選項卡,似乎不必要地有很多正在執行的 ssh-agent 實例。
有沒有更好的方法來實現這一目標?
您的問題似乎是您在每個 shell 初始化(可能在您的
.bash_profile
or中.bashrc
)開始新的代理呼叫。這不是必需的,因此您應該找到那些 ssh-agent 呼叫並將其刪除。在 OSX 上,通常會在啟動時為您的桌面會話啟動一個 ssh-agent。例如:
myhost:~)-> ps -ef | grep ssh-agent 501 986 1 0 10:18AM ?? 0:00.14 /usr/bin/ssh-agent -l 501 2126 736 0 5:30PM ttys007 0:00.00 grep ssh-agent
為了訪問它,您需要找出它的偵聽套接字在哪裡,通常在
/tmp/com.apple.launchd.<blah>/Listeners
哪裡(在哪裡<blah>
是一些隨機的字母數字標識符。可能有幾個,但您想要一個包含“Listeners”套接字的那個) )。一旦找到它的套接字,就可以使用標準 SSH 環境變數
SSH_AUTH_SOCK
. 例如:myhost:~)-> export SSH_AUTH_SOCK=/tmp/com.apple.launchd.1h2j3k4l5/Listeners myhost:~)-> ssh-add ~/.ssh/id_rsa Enter passphrase for ~/.ssh/id_rsa: <typing_here> Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)
將其導出到 shell 後,此時可以使用該
ssh-add
命令提供他或她的密鑰密碼並將密鑰添加到代理。您還可以在 ssh-agent 的手冊頁中查看您可能想要探索的其他選項。