More than 1 year has 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 のパスが存在しておらず失敗になっていたようです。死にたい。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.