Bash

如何在不重新創建 SSH 代理的新實例的情況下添加 SSH 密鑰?

  • November 2, 2017

我在我的 .bashrc 中添加以下內容

ssh-add ~/.ssh/id_rsa

因此,當我在我的 shell/終端應用程序(macOS 上的 iTerm2)中打開一個新選項卡時,它會使用 SSH 代理自動添加 SSH 身份,我不需要在該選項卡中手動輸入 SSH 密碼。但是,如果我有很多選項卡,似乎不必要地有很多正在執行的 ssh-agent 實例。

有沒有更好的方法來實現這一目標?

您的問題似乎是您在每個 shell 初始化(可能在您的.bash_profileor中.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 的手冊頁中查看您可能想要探索的其他選項。

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