SSH鍵認証ができない

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

症状

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

/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

で確認できる。