ssh-add 是否尊重 ssh_config 文件中的聲明?
背景
我使用 4096 位 RSA 密鑰對來授權訪問我的伺服器。
ssh_config
我指的是文件~/.ssh/config
和./etc/ssh/ssh_config
這是我的
~/.ssh/config
樣子:Host gg-root HostName 172.47.95.122 Host ss-root HostName 172.47.95.123 # Common for my servers Host gg-root ss-root User root Port 32001 IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_bull # Common for all Host * AddKeysToAgent yes
現在,我可以簡單地通過 SSH 連接到我的伺服器,使用以下內容(無需任何進一步配置):
ssh gg-root ssh ss-root
問題是,我需要將私鑰添加
~/.ssh/id_rsa_bull
到系統的 SSH 代理中,以使其易於用於其他應用程序,例如我用於 SFTP 的 FileZilla。(特別是因為我不喜歡 FileZilla 需要未加密的私鑰.ppk
。)所以,我要麼每次都執行這個命令:
ssh-add ~/.ssh/id_rsa_pepper
或者在我的
~/.profile
:ssh-add ~/.ssh/id_rsa_pepper > /dev/null 2>&1
問題
當我使用 將密鑰添加到系統的 SSH 代理
ssh-add
時,它是否尊重我在ssh_config
文件中所做的聲明?具體來說,它是否確保~/.ssh/id_rsa_pepper
僅用於172.47.95.{122,123}
?根據我對所讀內容的解釋,我認為應該如此。如果我錯了,請告知我應該如何向系統的 SSH 代理添加私鑰,其中所述私鑰僅用於指定的主機?
編輯:基於答案
這是我
~/.ssh/config
現在的樣子:Host gg-root HostName 172.47.95.122 Host ss-root HostName 172.47.95.123 # Common for my servers Host gg-root ss-root User root Port 32001 IdentityFile ~/.ssh/id_rsa_bull # Common for all Host * AddKeysToAgent yes IdentitiesOnly yes
ssh-add
不尊重配置文件。它只是將密鑰添加到代理。客戶端在連接到或(由於配置)時
ssh
會嘗試使用密鑰。如果該密鑰在代理中可用,則將從那裡使用該密鑰,否則將從文件中使用該密鑰(如果該密鑰與之關聯,則可能必須提供密碼)。~/.ssh/id_rsa_bull``gg-root``ss-root``IdentityFile
當連接到任何其他未配置特定
IdentityFile
in的主機時,也將使用代理中的密鑰~/.ssh/config
。這意味著該配置限制了用於與特定主機進行身份驗證的密鑰,但顯示的配置不會阻止“公牛密鑰”與其他主機一起使用。