Ssh

ssh-add 是否尊重 ssh_config 文件中的聲明?

  • September 12, 2019

背景

我使用 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

當連接到任何其他未配置特定IdentityFilein的主機時,也將使用代理中的密鑰~/.ssh/config。這意味著該配置限制了用於與特定主機進行身份驗證的密鑰,但顯示的配置不會阻止“公牛密鑰”與其他主機一起使用。

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