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_rsa1
をid_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
結局、機能しなかったキーが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
で間違ったキーが指定されている場合でも、他のキーで機能すると思います。
私は実際にはgnomeを使用していませんが、ssh-agentと通信しようとしている(または便宜上1つを開始している)可能性があります。
キーがパスワードなしであるかどうかについては言及していません。
コピーで間違っている可能性があるもう1つのことは、a)user2の/ home、b)それらの.ssh、またはc)authorized_keysファイルのアクセス許可です。