Edited at

SSH で Permission Denied となる傾向と対策

More than 3 years have passed since last update.

SSH ログインしたときに下記エラーが出る傾向と対策をまとめました。

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


まずログを見る

クライアント側でこのエラーが出たら、サーバー側の /var/log/secure にエラーとなった原因が記録されます。最重要です。たとえば、

Feb 26 23:58:39 server sshd[29619]: Authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys

みたいに書いてあると、所有者とパーミッションなどに絞って原因を見ていくことになります。

よく原因となる確認ポイントを下記に書いていきます。


接続先に authorized_keys が設置されているか

公開鍵認証する場合、接続する側のマシンで公開鍵と秘密鍵のペアを作成し、公開鍵を接続ユーザのホームディレクトリ配下 ~/.ssh/authorized_keys に設置する必要があります。


パーミッションは適切か

公開鍵認証する場合、接続先のサーバで所有者とパーミッションが適切に設定されていることを確認します。


  • /home/user/.ssh は 0700

  • /home/user/.ssh/authorized_keys は 0600

にします。パーミッションに過不足があるとエラーになることがあります。


ユーザ追加時の設定を確認する

あれいつもはこれ確認したらつながるのに、なんで今日はダメなんだ? と思っていたら、ユーザ追加するときにログインシェルを設定していて、そのパスが存在していないのが原因でした。

具体的には、 Ansible で

---

- name: useradd youcune
user: name=youcune shell=/bin/zsh

とやっていました。この zsh のパスが存在しておらず失敗になっていたようです。死にたい。