正常な場合、鍵ペアを使用して、公開鍵を ~/.ssh/authorized_keys
に追加することで、パスワードなしでログインできます。
しかし、最近、設定が正しいことを確認してもパスワードの入力が必要な問題が発生しました。ここでは、トラブルシューティングのプロセスを記録し、可能なすべての状況を整理します。
パスワードなしログインができない原因#
1. ファイルとディレクトリのパーミッションの問題#
user
ユーザーの ~/.ssh
ディレクトリと ~/.ssh/authorized_keys
ファイルのパーミッションを確認し、不適切なパーミッション設定が SSH サービスによって拒否される可能性があります。
したがって、~/.ssh
を 700 に設定し、~/.ssh/authorized_keys
を 600 に設定する必要があります。
~ は現在のユーザーのホームディレクトリを指します。root ユーザーが user
の対応する設定ファイルとディレクトリを指定する場合は、絶対パスを使用する必要があります。一般的な場合、user
のホームディレクトリの絶対パスは /home/user/
です。データディスクがバインドされている場合は、/data/home/user
にある可能性もあります。具体的な状況に応じて異なります。
2. SSH 設定ファイル#
これは見落とされる可能性のある問題です。通常、SSH の設定に問題はありませんが、上記の設定が正しいことを確認しても接続できない場合は、SSH の設定ファイル etc/ssh/sshd_config
を確認し、次の設定が有効になっていることを確認してください。
これらの設定は、公開鍵認証機能と公開鍵ファイルの場所をそれぞれ有効にします。変更した後は、sshd
サービスを再起動する必要があります。
システムによっては、再起動コマンドが異なる場合があります。
systemctl
が見つからないというエラーが表示される場合は、sudo service sshd restart
を試してみてください。
3. ユーザーのホームディレクトリのパーミッションの問題#
user
のパスワードなしログインを使用する場合、user
のホームディレクトリが他のユーザーに開かれていないことを確認する必要があります。他のユーザーが user
のホームディレクトリに書き込み権限を持っている場合、SSH はログインを拒否する可能性があります。これはセキュリティ上の理由からです。したがって、ホームディレクトリは自分自身だけが書き込めるように制限する必要があります。
ログの分析#
上記の原因をすべて確認してもパスワードなしログインができない場合は、SSH サービスのログファイルを使用して、ログインの失敗に関する情報を取得し、診断を行うことができます。systemd
システム(Fedora、Ubuntu、Debian、CentOS/RHEL 7 以降を含む)の場合、次のコマンドを使用できます。
例えば、私の場合、次のようなログ内容がトラブルシューティング中に見つかりました。
Authentication refused: bad ownership or modes for directory /data/home/user
という文言があります。つまり、user
フォルダのモード(パーミッション)が正しくないため、SSH アクセスが拒否されました。
上記の第 3 項に示されているように、/data/home/user
のパーミッションを修正することで問題が解決します。