OpenSSHサーバーがキー認証を拒否する

OpenSSHサーバーがキー認証を拒否する

新しいサーバーで公開鍵認証を使用しようとしましたが、この問題に遭遇しました。

$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

ログインするにはパスワードを入力する必要があります。

ただし、そのサーバーにすでに 1 つのセッション (パスワードで接続) が接続されている場合、次の接続ではキー認証を使用してパスワード入力を回避します。

SSH 接続が確立されていない場合は、パスワードを入力せずに接続することはできません。

これは本当に奇妙です。/usr/sbin/sshd新しいサーバーと他の通常のサーバー間の の MD5 をチェックしましたが、同じでした。次に、 を/etc/ssh/sshd_config他の通常のサーバーから新しいサーバーにコピーし、 を実行しましたservice ssh restart。問題は依然として存在します。

これをどうやって直せばいいのでしょうか?

答え1

.sshクライアント マシン上のフォルダーとその中にあるファイルが所有者 ( chmod -R 600 .ssh) のみによって読み取り可能であること、およびフォルダーとファイルの所有者が正しいことを確認します(chown必要に応じてコマンドを使用します)。

また、authorized_keysサーバー上のフォルダーとファイル (おそらく/root/.sshログインしようとしているユーザーのフォルダー内またはホーム フォルダー) をチェックして、権限と所有者が同じように設定されていることを確認します。


編集: さらなるフィードバック (および推測) に基づいて、/etc/ssh/sshd_config次のパラメータが以下のように設定されているかどうかを確認してください。設定されていない場合は、編集してみてください。

AuthorizedKeysFile /home/%u/.ssh/authorized_keys

注意: これは、rootとしてリモートログインしないことを前提としています

答え2

私の場合、ホーム ディレクトリの権限は775または0755それ以下でした。

authorized_keys ファイルへの完全なパス。つまり、以下で/home/user/.ssh/ある必要があります0755

答え3

私の場合、id_rsa.pub.ssh から削除することでこのエラーを修正しました。

別のマシンからコピーしid_rsa、それを複数のダミー クライアントに配布しました。そのため、id_rsaと はid_rsa.pub実際には異なるキーであり、 の使用をid_rsa完全に防止していました。

ただし、これを明確に示すエラー メッセージはありません。基本的には、異なるマシンを同一の状態にしようとして偶然に気づきました。

答え4

いろいろ悩んだ末、問題の解決策を見つけました。

ユーザーのホーム ディレクトリには、権限がない777か、誰でも書き込み可能であってはいけません。その場合、SSH キーの検証は失敗し、ログインにパスワードを入力する必要があります。

関連情報