Vincent Ko

VK's Blog

SSH 免密ログインのトラブルシューティングガイド

正常な場合、鍵ペアを使用して、公開鍵を ~/.ssh/authorized_keys に追加することで、パスワードなしでログインできます。

しかし、最近、設定が正しいことを確認してもパスワードの入力が必要な問題が発生しました。ここでは、トラブルシューティングのプロセスを記録し、可能なすべての状況を整理します。

パスワードなしログインができない原因#

1. ファイルとディレクトリのパーミッションの問題#

user ユーザーの ~/.ssh ディレクトリと ~/.ssh/authorized_keys ファイルのパーミッションを確認し、不適切なパーミッション設定が SSH サービスによって拒否される可能性があります。

したがって、~/.ssh を 700 に設定し、~/.ssh/authorized_keys を 600 に設定する必要があります。

# リモートサーバー上のターゲットユーザーのホームディレクトリ(~の指す場所)で実行します
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

~ は現在のユーザーのホームディレクトリを指します。root ユーザーが user の対応する設定ファイルとディレクトリを指定する場合は、絶対パスを使用する必要があります。一般的な場合、user のホームディレクトリの絶対パスは /home/user/ です。データディスクがバインドされている場合は、/data/home/user にある可能性もあります。具体的な状況に応じて異なります。

2. SSH 設定ファイル#

これは見落とされる可能性のある問題です。通常、SSH の設定に問題はありませんが、上記の設定が正しいことを確認しても接続できない場合は、SSH の設定ファイル etc/ssh/sshd_config を確認し、次の設定が有効になっていることを確認してください。

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

これらの設定は、公開鍵認証機能と公開鍵ファイルの場所をそれぞれ有効にします。変更した後は、sshd サービスを再起動する必要があります。

sudo systemctl restart sshd

システムによっては、再起動コマンドが異なる場合があります。systemctl が見つからないというエラーが表示される場合は、sudo service sshd restart を試してみてください。

3. ユーザーのホームディレクトリのパーミッションの問題#

user のパスワードなしログインを使用する場合、user のホームディレクトリが他のユーザーに開かれていないことを確認する必要があります。他のユーザーが user のホームディレクトリに書き込み権限を持っている場合、SSH はログインを拒否する可能性があります。これはセキュリティ上の理由からです。したがって、ホームディレクトリは自分自身だけが書き込めるように制限する必要があります。

755 /data/home/user

ログの分析#

上記の原因をすべて確認してもパスワードなしログインができない場合は、SSH サービスのログファイルを使用して、ログインの失敗に関する情報を取得し、診断を行うことができます。systemd システム(Fedora、Ubuntu、Debian、CentOS/RHEL 7 以降を含む)の場合、次のコマンドを使用できます。

sudo journalctl -u sshd

例えば、私の場合、次のようなログ内容がトラブルシューティング中に見つかりました。

-- Logs begin at Tue 2024-03-19 10:34:54 CST, end at Thu 2024-03-21 10:19:04 CST. --
Mar 21 10:12:26 VMOS sshd[767024]: DBG|operate_common.h|55|MakeNslcdInteraction|action=1001, interaction ok
Mar 21 10:12:26 VMOS sshd[767024]: DBG|operate_common.h|55|MakeNslcdInteraction|action=5003, interaction ok
Mar 21 10:12:26 VMOS sshd[767024]: Authentication refused: bad ownership or modes for directory /data/home/user
Mar 21 10:12:26 VMOS sshd[767031]: DBG|operate_common.h|55|MakeNslcdInteraction|action=80003, interaction ok
Mar 21 10:12:31 VMOS sshd[767031]: pam_tsso(sshd:auth): Authentication failure for user from xx.xx.xx.xx

Authentication refused: bad ownership or modes for directory /data/home/user という文言があります。つまり、user フォルダのモード(パーミッション)が正しくないため、SSH アクセスが拒否されました。

上記の第 3 項に示されているように、/data/home/user のパーミッションを修正することで問題が解決します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。