web-dev-qa-db-ja.com

SSH公開鍵ログイン:2つの異なる鍵とSSH_AUTH_SOCKの動作

Ubuntu 12.04デスクトップのユーザー(user1)には、~/.ssh/id_rsa~/.ssh/id_rsa1(および.pubファイル)の2つのSSHRSAキーが構成されています。両方の公開鍵は、サーバーのアカウント(user1@myserver)の許可された鍵で構成されます。

デスクトップ(クライアント)マシンにログオンし、Gnomeターミナルを使用すると、次のいずれかのキーを使用してサーバーにログオンできます。

  • ssh user1@myserverは暗黙的に/home/user1/.ssh/id_rsaを取得します
  • ssh -f /home/user1/.ssh/id_rsa1 user1@myserverも機能します。

Gnomeデスクトップ経由でログオンする代わりに、別のホスト(またはlocalhost)からSSH経由でクライアントマシンにログオンするか、suを使用すると、/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でも機能するようになりました。

これらの2つのキーペア間の動作の違いと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
2
Bruno

結局、機能しなかったキーが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で間違ったキーが指定されている場合でも、他のキーで機能すると思います。

3
Bruno

私は実際にはgnomeを使用していませんが、ssh-agentと通信しようとしている(または便宜上1つを開始している)可能性があります。

キーがパスワードなしであるかどうかについては言及していません。

コピーで間違っている可能性があるもう1つのことは、a)user2の/ home、b)それらの.ssh、またはc)authorized_keysファイルのアクセス許可です。

2
tink