はじめに
先日、Rocky Linux 10サーバーでLVM(Logical Volume Manager)を用いたパーティションサイズ変更作業を行った際、複合的な問題に遭遇しました。
作業内容は、/home
に偏っていたディスク割り当てを、ルート(/
)パーティションへ再配分するという標準的なものでした。しかし、この作業を起点として、①コンソールログイン不可、②SSH公開鍵認証の失敗、③SSH接続の深刻な遅延という3つの問題が連鎖的に発生しました。
同様の問題に直面した方の参考になる可能性を考え、その原因と解決に至るまでの過程を備忘録としてまとめます。
事象1:特定ユーザーでのコンソールログイン不可
問題の状況
パーティション操作と/home
ディレクトリのデータリストア後、ユーザーアカウントでコンソールからのログインが不可能となりました。正しいパスワードを入力しても認証が拒否される一方で、root
ユーザーでのログインは正常に機能していました。(パーティション変更の際にシングルユーザーでrootログインする必要がありました)
原因の分析
調査したところ、直接的な原因は/home/user
ディレクトリのファイルシステムパーミッションにあると考えられました。root
権限でのデータリストア後、パーミッションが 700
(drwx------
) に設定されていました。この設定は所有者以外の全アクセスを禁じるため、ログインシーケンス中にユーザーセッションを準備するシステムプロセスからのアクセスをもブロックしてしまい、結果としてセッションの初期化に失敗し、ログインが拒否されていました。
対処
root
権限で以下のコマンドを実行し、当該ディレクトリのパーミッションを標準的な 755
(drwxr-xr-x
) へ変更しました。これにより、システムプロセスが必要なアクセス権を確保し、正常なセッション初期化が可能となりました。
sudo chmod 700 /home/user/.ssh
sudo chmod 600 /home/user/.ssh/authorized_keys
事象2:SSH公開鍵認証の失敗
上記の対処では不十分であり、パスワード認証が求められる状態が続きます。(ログインはできる状態でした)
そこでrestorecon
コマンドを実行し、SELinuxコンテキストをシステムのデフォルトポリシーに基づき再帰的に復元しました。
sudo restorecon -Rv /home/user/.ssh
ここまで実施して、SSH daemonはファイルへのアクセス権を正常に得るため、公開鍵認証ができるようになります。
事象3:SSH接続の深刻な遅延
問題の状況
事象2において公開鍵認証は回復したものの、認証成功からシェルプロンプトが表示されるまでに1分以上の遅延が発生する問題が残留しました。
原因の分析
クライアント側の詳細ログ (ssh -vvv
) から、遅延が認証プロセス後、サーバー側のセッション準備段階で発生していることが特定されました。サーバーログでは、pam_systemd
モジュールが Failed to create session: ... failed with 'dependency'
というエラーを記録しており、systemd
によるユーザーセッションの作成が依存関係の問題で失敗していることがログから確認できました。これは、systemd
のユーザーインスタンスと関連サービス間に、個別のサービス再起動では解消されない一時的な不整合が生じていたことを示唆します。
第一段階の対処
問題が特定されたユーザーセッション管理サービスのみを再起動する対処を試みましたが、これでは解消しませんでした。
systemctl restart user@1000.service
原因分析(続)
全くログインできないわけではなく異常に遅い状態でした。これはpam_systemd
が失敗した後にpam_unix
がフォールバックとして機能し、最終的にログインを成功させていた、という流れでした。このタイムアウトの時間が遅延の正体となります。
第二段階の対処
しかし、この個別サービスの再起動では事象は解消されませんでした。このことから、問題が単一のサービスに留まらず、より広範なシステムコンポーネント間の不整合に起因している可能性が示唆されました。少々強引ではありますが、OSを再起動することにしたところ、systemd
のセッション作成は正常に機能するようになり、SSHログイン時の遅延は完全に解消されました。
まとめ
最終的には強引な再起動となりましたが、Homeディレクトリに関する操作をする際はSELinuxとユーザーに関するServiceは頭に入れておく必要があります。この記録が、同様の状況に直面した方の問題解決の一助となれば幸いです。
蛇足
Gemini使っていろいろ対応探していたのですが、SSHログインできない理由とか応答が遅い理由とかを聞くとネットワークの遅延だとかポート空いてるのかなどの話に行ってしまうので、早い段階でそこは考慮から外せと言っておいた方がよかったです。なんだかんだで自分でもある程度調べる必要は依然としてありますけども、SE Linuxとかは割と頭から抜けがちになるので、Gemini対処方法がチンプンカンプンでも見るポイントを洗い出すという点ではGemini使う価値がありますね。