
新しいサーバーで公開鍵認証を使用しようとしましたが、この問題に遭遇しました。
$ 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 キーの検証は失敗し、ログインにパスワードを入力する必要があります。