SSH 公鑰登錄:兩個不同的密鑰和 SSH_AUTH_SOCK 行為
Ubuntu 12.04 桌面上的使用者 (
user1
) 配置了兩個 SSH RSA 密鑰:~/.ssh/id_rsa
和~/.ssh/id_rsa1
(和.pub
文件)。兩個公鑰都配置在伺服器帳戶 (user1@myserver
) 上的授權密鑰中。當登錄到桌面(客戶端)機器並使用 Gnome 終端時,使用任一鍵登錄到伺服器都可以正常工作:
ssh user1@myserver
含蓄地拿起/home/user1/.ssh/id_rsa
ssh -f /home/user1/.ssh/id_rsa1 user1@myserver
也有效。如果不是通過 Gnome 桌面登錄,而是通過 SSH 從另一台主機(甚至
localhost
)登錄到客戶端電腦,或者使用su
, using/home/user1/.ssh/id_rsa
不再有效。這似乎與
SSH_AUTH_SOCK
(最初在與客戶端建立 SSH 連接的環境中缺失)有關。如果我將其設置為桌面會話中可見的值,則再次/tmp/keyring-xxxxxxxxxxx/ssh
登錄id_rsa
可以正常工作。如果我取消設置
SSH_AUTH_SOCK
(再次使日誌記錄id_rsa
失敗)並複製id_rsa1
到id_rsa
(和.pub
文件),它現在id_rsa
也可以使用。什麼可以解釋這兩個密鑰對之間的行為差異以及它們與 的互動
SSH_AUTH_SOCK
?我在伺服器日誌中看不到任何內容。
這是 SSH 客戶端日誌的片段,就在它不同之前:
debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: /home/user1/.ssh/id_rsa (0x7f6b7059b260) debug1: Authentications that can continue: publickey,password debug3: start over, passed a different list publickey,password debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/user1/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply
其次,當它不適用於該使用者/密鑰時:
debug1: Authentications that can continue: publickey,password debug2: we did not send a packet, disable method
事實證明,不起作用的密鑰畢竟沒有在
authorized_keys
文件中正確配置。對於那個很抱歉…我錯誤地認為這
ssh -i /home/user1/.ssh/id_rsa user1@myserver
表明它配置正確,但事實並非如此。它也使用其他鍵。強制ssh -i /home/user1/.ssh/id_rsa -oIdentitiesOnly=yes user1@myserver
也會因配置不正確而失敗。我猜想使用 Gnome 登錄時設置的 SSH 代理也會獲取
~/.ssh/
目錄中的其他密鑰,這使得它可以與其他密鑰一起使用,即使使用-i
.