公開鍵認証ができない事象を解決したので備忘録。

 

症状

特定のユーザーだけ公開鍵認証ができない。

/usr/sbin/sshd -d コマンドを使ってデバッグモードでsshdを起動するとログインできる。

/var/log/secure には特に有用な情報が見つけられない。

パーミッション設定は全て正しい。(/home/username → 755, /home/username/.ssh → 700, /home/username/.ssh/authorized_keys → 600)

 

解決法

結論としては、ホームディレクトリ、.sshディレクトリ、authorized_keysに余計なコンテキストが設定されていたのが原因だった。

httpdによって公開するディレクトリをユーザーホーム以下の任意のディレクトリに設定したとき、httpd_sys_content_t のコンテキストを誤って /home/username 以下全てに設定してしまっていた。

restorescon /home/username -R を使ってリセットすることで解決した。

semanage fcontext -l | grep httpd で/home/username に設定されているコンテキストを確認し、設定されていないか、正しく設定されているならば restorecon /home/username -R でOK。

/home/username に httpd_sys_content_t や httpd_sys_rw_content_t などが設定されているようであれば semanage fcontext –d “/home/username(/.*)?” などを使って設定を削除してから restorecon /home/username -R を行う。

ファイル、フォルダのコンテキストは ls -Z /home で確認できる。