Ssh

SSH 公鑰登錄:兩個不同的密鑰和 SSH_AUTH_SOCK 行為

  • October 29, 2013

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_rsa1id_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.

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