SSHでPermission Deniedになる場合

sshでサーバへ接続しようとすると、

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

このようなエラーが表示されて接続できない時がある。

偉い人がこちらで対策を纏めてくれてるけど、パーミッションを見直しても間違っていない。

これで、結構悩みました。

ssh -v(もしくは-vvvなど)を実行してみましたが、

略
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/hogehoge/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
略

となるはずが、

略
debug1: Offering RSA public key: /Users/hogehoge/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Trying private key: /Users/hogehoge/.ssh/id_dsa
debug1: Trying private key: /Users/hogehoge/.ssh/id_ecdsa
debug1: Trying private key: /Users/hogehoge/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

となって、接続できない。

この場合、サーバCent OS6系だと/etc/sshもしくは、~/.sshなどをls -lしてみてください。

# ls -l /etc/ssh/
-rw-r–r–. 1 root root 2047 8月 13 18:58 2015 ssh_config
略
-rw——- 1 root root 3870 2月 13 17:37 2016 sshd_config

パーミッションの後に「.」があるファイルとないファイルがある場合があります。
これは、ファイルがSELinuxで管理されていることを示しています。

私の場合、元のサーバから設定ファイルをコピーしてきたので、サーバのSELinuxが有効なまま、適切に設定されていないファイルが混じってしまい、sshdがファイルを読めなくなっていました。

対策としては、いろいろのあると思うのですが、

# vi /etc/sysconfig/selinux
SELINUX=disabled

などとして、SELinuxを無効にすると接続できるようになると思います。
もしくはls -lして.がついてるファイルに対して適切に設定してください。