Ssh

登錄 Y 遠端使用者時使用 X SSH 密鑰?

  • July 27, 2017

我正在尋找一種在使用特定使用者名登錄到遠端主機時設置特定 SSH 密鑰的方法。這可能在 SSH 配置文件中嗎?

例如:

對使用者名“testuser”使用密鑰“id_rsa-test”:

ssh testuser@host1
ssh testuser@host2
ssh testuser@host3

對所有其他使用者使用密鑰“id_rsa”。

ssh root@host1
ssh admin@host2
ssh user@1.2.3.4

有沒有辦法配置這個?

謝謝@xhienne(評論連結)的建議。

將以下內容添加到 ssh_config 似乎已經解決了這個問題:

Match User testuser
 IdentityFile ~/.ssh/id_rsa-test

這個塊應該放在上面,以便提前Host *發送給 testuser。id_rsa-test``id_rsa

假設您使用的是 OpenSSH,您可以~/.ssh/config為每個文件配置文件,那麼您也不必指定使用者,您可以創建自己的名稱:

host host1
   User testuser
   IdentityFile ~/.ssh/id_rsa-test

那麼當你這樣做時,ssh host1它會自動這樣做,或者,因為你也將host1作為其他使用者使用,你可以這樣做

host test-host1
   User testuser
   IdentityFile ~/.ssh/id_rsa-test
   Hostname host1

然後做ssh test-host1

你可以為你想要的每個主機做同樣的事情。

任何與 ssh_config(5) 文件中的條目不匹配的主機都將使用預設行為 - 或使用 ssh_config 在全域設置中指定的預設值,即不在主機塊內

ssh_config 不支持使用者名匹配,但您可以編寫一個 shell 腳本來為您檢測。這是 bash 中的一個脆弱的假設,它假設您的使用者名/主機始終是第一個參數,如果不是,則會中斷:

ssh() {
   if [[ "$1" =~ ^testuser@ ]]; then
       command ssh -i ~/.ssh/id_rsa-test "$@"
   else
       command ssh "$@"
   fi
}

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