公開鍵認証ができない事象を解決したので備忘録。
症状
特定のユーザーだけ公開鍵認証ができない。
/usr/bin/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
で確認できる。