sshで鍵ファイルを使用したリモートログインを設定するときに、
Permission denied (publickey)
となってログインできない場合があります。
だいたいはログイン先のauthorized_keysなどのパーミッションを見直すところなのですが、どこを見ても設定は間違っていないはず。というときに、SELinuxに引っかかっていたパターンがありました。
見分け方としてはカンタンで、rootでログインして
# getenforce
として「Enforcing」と表示されたらSELinuxが有効になっています。
これを
# setenforce 0
としてやると無効になるので、この状態でsshが通ればビンゴ。
SELinuxで引っかかっている場合は、/var/log/audit/audit.logにもメッセージがあるので、そちらにログが出ていないかを確認すると良いです。
私の場合は、 authorized_keysをコピーしてもってきているところがあり、どうやらそれが引っかかったみたい。
# restorecon -RFv ~/.ssh/authorized_keys
としてやって対処しました。
SELinuxで引っかかると、「一見してどこも間違っていないはずなのに動かない」という状態になるから、とても厄介なんですよね…
やはりオフにするべきなのか…