Ssh
登錄 Y 遠端使用者時使用 X SSH 密鑰?
我正在尋找一種在使用特定使用者名登錄到遠端主機時設置特定 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 }