サーバにログインできない!ときのよくある原因と解決方法をまとめたー。
主に自分のために!

  • 接続元のPCで出るエラーメッセージ
  • 接続先のサーバで出るエラーメッセージ
  • ログインできない原因
  • 解決方法
をそれぞれ書いておいたので、きっと未来の自分を助けてくれるはず・・・。

前提として、192.168.146.128のサーバに対して、mochikoAsTechというユーザ名でログインしようとしています。

よくある原因 1. authorized_keysのパーミッションが緩すぎる
  • ログインできないときのPuTTYのエラーメッセージ
PuTTY 致命的エラー
Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)
  • ログインできないときのWinSCPのエラーメッセージ
エラー
Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)
認証ログ (詳細はセッションログを見て下さい):
ユーザ名"mochikoAsTech" を使用中
認証に失敗
    • ログインできないときの/var/log/secure のエラーメッセージ
    sshd[3016]: Authentication refused: bad ownership or modes for file /home/mochikoAsTech/.ssh/authorized_keys
    sshd[3019]: Received disconnect from 192.168.146.1: 14: No supported authentication methods available
    • ログインできない原因

      公開鍵を置いているauthorized_keysのパーミッションで、groupやotherに対してwの権限がついてるから。
      例えばこんなんになってる。
    $ ls -l
    -rw-rw-r-- 1 mochikoAsTech mochikoAsTech  400 Feb 22 09:58 authorized_keys
    • 解説

      authorized_keysのパーミッションは、600のように「オーナーのみにwの権限がついてて、他の人が書き込めない状態」じゃないとログインできない。公開鍵を自分以外のユーザがへいほい追加できるような状態は不安全なので当然と言えば当然。

    • 解決方法

      atuthorized_keysのパーミッションを600(rw- --- ---)にする。groupとotherにwがついていなければいいので、640(rw- r-- ---)や644(rw- r-- r--)や655(rw- r-x r-x)などでもOK。
    $ chmod 640 authorized_keys
    $ ls -l
    -rw-r--r-- 1 mochikoAsTech mochikoAsTech  400 Feb 22 09:58 authorized_keys

    よくある原因 2. .sshディレクトリのパーミッションが緩すぎる
    • ログインできないときのPuTTYのエラーメッセージ
    PuTTY 致命的エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic) 
    • ログインできないときのWinSCPのエラーメッセージ
    エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)
    認証ログ (詳細はセッションログを見て下さい):
    ユーザ名"mochikoAsTech" を使用中
    認証に失敗
    • ログインできないときの/var/log/secure のエラーメッセージ
    sshd[3160]: Authentication refused: bad ownership or modes for directory /home/mochikoAsTech/.ssh
    sshd[3163]: Received disconnect from 192.168.146.1: 14: No supported authentication methods available
    • ログインできない原因

      .sshディレクトリ(=authorized_keysが置いてあるディレクトリ)のパーミッションで、groupやotherに対してwの権限がついてるから。
      例えばこんなんになってる。
    $ ls -la
    drwxrwxr-x 2 mochikoAsTech mochikoAsTech 4096 Mar  8 07:53 .ssh 
    • 解説

      .sshディレクトリもauthorized_keysのパーミッションと同様に、700のように「オーナーのみにwの権限がついてて、他の人が書き込めない状態」じゃないとログインできない。(これって他のユーザが適当なファイルをsshディレクトリ以下に作って、シンボリックリンクを貼ったらauthorized_keys変えられるから?誰か教えてー)

    • 解決方法

      .sshディレクトリのパーミッションを700(rwx --- ---)にする。groupとotherにwがついていなければいいので、740(rwx r-- ---)や744(rwx r-- r--)などでもOK。
    $ chmod 700 .ssh
    $ ls -la
    drwx------ 2 mochikoAsTech mochikoAsTech 4096 Mar  8 08:47 .ssh

    よくある原因 3. 該当するユーザがいない or ユーザ名が間違っている
    • ログインできないときのPuTTYのエラーメッセージ
    PuTTY 致命的エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic) 
    • ログインできないときのWinSCPのエラーメッセージ
    エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)
    認証ログ (詳細はセッションログを見て下さい):
    ユーザ名"mochiko" を使用中
    認証に失敗
    • ログインできないときの/var/log/secure のエラーメッセージ
    sshd[4503]: Invalid user mochiko from 192.168.146.1
    sshd[4506]: input_userauth_request: invalid user mochiko
    sshd[4506]: Received disconnect from 192.168.146.1: 14: No supported authentication methods available 
    • ログインできない原因

      mochikoというユーザが存在しないから。(mochikoAsTechというユーザは存在している)
    $ id mochiko
    id: mochiko: No such user
    $ id mochikoAsTech
    uid=500(mochikoAsTech) gid=500(mochikoAsTech) groups=500(mochikoAsTech),10(wheel)
    • 解説

      ユーザ名を間違えてるという意外とありがちなパターン。存在しないユーザでログインは出来ない。

    • 解決方法

      正しいユーザ名でログインする。存在しているユーザ名を参照したいなら/etc/passwdを見るか、idコマンドで確認する。
    $ cat /etc/passwd

    よくある原因 4. ユーザのパスワードがロックされている
    • ログインできないときのPuTTYのエラーメッセージ

      過去に何度かこれで引っかかってるんだけど、今回なぜか上手く再現できず。確かこんなメッセージだった気が・・・違うかも・・・。
    PuTTY 致命的エラー
    サーバが突然ネットワーク接続を閉じました 
    • ログインできないときのWinSCPのエラーメッセージ

      これも再現できなかったので、多分こんなメッセージだった気が・・・なんでエラーって後で再現しようとすると大体出来ないんだ・・・。
    エラー
    サーバがネットワーク接続を閉じました
    認証ログ (詳細はセッションログを見て下さい):
    ユーザ名"mochikoAsTech" を使用中
    エージェントからの公開鍵 "comment" で認証中
    認証に失敗
    • ログインできないときの/var/log/secure のエラーメッセージ

      これも再現できなかっ(ry けど、過去のメモを見るとこんなんだった模様。
    sshd[4869]: User mochikoAsTech not allowed because account is locked
    • ログインできない原因

      ユーザのパスワードがロックされているから。(パスワードが設定されているでも、未設定でEmptyになっているでもなくロックされているから)
      ロックされているかどうかはpasswdコマンドの-Sオプションで確認できる。

      ちなみにロックされているときは「Password locked」なので「LK」だけど、パスワードが設定されているときは「Password set」で「PS」、パスワードが未設定のときは「Empty password(No password)」で「NP」な模様。(/etc/shadow見てもわかるかなーと思ったけど、ロックされているものも未設定でEmptyになっているものもどっちもただの!!なので区別つかなかった・・・)
    $ passwd -S mochikoAsTech  ← -Sオプションで現在のパスワードの状態を確認
    mochikoAsTech LK 2014-03-08 0 99999 7 -1 (Password locked.
    # vigr  ←手動で/etc/groupと/etc/gshadowを編集してグループを作って
    You are using shadow groups on this system.
    Would you like to edit /etc/gshadow now [y/n]? y
    # vipw  ←手動で/etc/passwdと/etc/shadowを編集してユーザを作って
    You are using shadow passwords on this system.
    Would you like to edit /etc/shadow now [y/n]? y
    # mkdir -p /home/mochikoAsTech/.ssh  ←ホームディレクトリ作って
    # chmod 700 /home/mochikoAsTech/.ssh  ←.sshディレクトリのパーミッション直して
    # vi /home/mochikoAsTech/.ssh/authorized_keys   ←公開鍵を設置して
    # chmod 600 authorized_keys  ←authorized_keysのパーミッション直して
    # chown -R mochikoAsTech:mochikoAsTech /home/mochikoAsTech  ←ホームディレクトリ以下のオーナーを直した
    # id mochikoAsTech   ←mochikoユーザできてる!なのにロックされててログインできない!
    uid=500(mochikoAsTech) gid=500(mochikoAsTech) groups=500(mochikoAsTech)
    • 解決方法

      ユーザのパスワードロックを解除する。いちばん楽なのは、パスワードを設定して、不要ならそのあとパスワードを削除して未設定状態に戻す。これでログインできるようになる。

      ちなみにusermod -Uとかpasswd -uでアンロックしようとしても、パスワードが未設定だとエラーも吐かずにしらっと「何もしない」ので、「アンロックしたのに!したのにいつまでもaccount is lockedって出る!」と悩む羽目になる。ひどい。

      あとパスワードわざわざ削除してるのは、こんな感じの理由で。
      【linux】ユーザーのパスワードを無効にする、空にする at softelメモ
      Twitter / mochikoAsTech: Aさんがsu - ...
    # passwd -S mochikoAsTech  ←パスワードの状態を確認
    mochikoAsTech LK 2014-03-08 0 99999 7 -1 (Password locked.)  ←ロックされてる
    # passwd mochikoAsTech  ←パスワードを設定する
    Changing password for user mochikoAsTech.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
    # passwd -S mochikoAsTech  ←再度パスワードの状態を確認
    mochikoAsTech PS 2014-03-08 0 99999 7 -1 (Password set, MD5 crypt.) ←パスワードが設定されてる。この時点でもうログインできるようになっているはず!
    # passwd -d mochikoAsTech  ← -d(delete)オプションでパスワードを削除
    Removing password for user mochikoAsTech.
    passwd: Success
    # passwd -S mochikoAsTech  ←パスワードが未設定状態になった
    mochikoAsTech NP 2014-03-08 0 99999 7 -1 (Empty password.)

    よくある原因 5.  公開鍵が設置されていない or 公開鍵が間違っている
    • ログインできないときのPuTTYのエラーメッセージ
    PuTTY 致命的エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic) 
    • ログインできないときのWinSCPのエラーメッセージ
    エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)
    認証ログ (詳細はセッションログを見て下さい):
    ユーザ名"mochikoAsTech" を使用中
    認証に失敗
    • ログインできないときの/var/log/secure のエラーメッセージ
    sshd[5545]: Received disconnect from 192.168.146.1: 14: No supported authentication methods available 
    • ログインできない原因

      authorized_keysファイルがない、またはauthorized_keysの中身が空っぽで公開鍵が設置されていない、または公開鍵が間違っている(=authorized_keysの中の公開鍵に余計な文字が入ったり、削除されてしまったり、自分のPCで使用している秘密鍵とペアじゃない公開鍵が設置されている)から。
    • 解説

      秘密鍵とペアになる公開鍵がサーバになければ、鍵認証が成立しないのでログイン出来ないのは当然。
      鍵ペアの作り方がよく分からず、何組か鍵ペアを作ってしまったときにありがち。

    • 解決方法

      公開鍵をauthotized_keysに設置する。
      鍵ペアをいくつか作ってしまってもうどれがどれだか分からないときは、まずどの秘密鍵を使うかを決めて、それ以外は全部捨てる。で、秘密鍵には公開鍵の情報もインクルードされているので、とりあえず「使う秘密鍵」をテキストエディタかPuTTYgenで開いて、ペアとなる公開鍵をauthorized_keysに設置すればOK。

    よくある原因 6. Pageantが起動していない
    • ログインできないときのPuTTYのエラーメッセージ
    PuTTY 致命的エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic) 
    • ログインできないときのWinSCPのエラーメッセージ
    エラー
    Disconnected: No supported authentication methods available (server sent: publickey,gssapi-with-mic)
    認証ログ (詳細はセッションログを見て下さい):
    ユーザ名"mochikoAsTech" を使用中
    認証に失敗
    • ログインできないときの/var/log/secure のエラーメッセージ
    sshd[5545]: Received disconnect from 192.168.146.1: 14: No supported authentication methods available 
    • ログインできない原因

      PuTTYやWinSCPで「Pageantを使って認証する」としているのに、Pageantを起動していないから。
      Pageantに秘密鍵を登録していない、またはPuTTYやWinSCPで「Pageantを使って認証する」にチェックが入っていない、などの原因も考えられる。
    • 解説

      5とほぼ同じ理由。サーバにある公開鍵とペアになる秘密鍵を提示できなかったので、鍵認証が成立せず、ログイン出来なかった、ということ。

    • 解決方法

      Pageantを起動して秘密鍵が登録されていることを確認すればOK。PuTTYやWinSCPで「Pageantを使って認証する」にチェックが入っているかも確認する。

    よくある原因 7. サーバで変更があってホスト認証に失敗する
    • ログインできないときのPuTTYのエラーメッセージ

      PCからサーバにログインするときは、ホスト認証に失敗しても特にエラーは出ない様子。
      PCからLinuxのサーバにログインして、そこからさらに別のLinuxサーバにログインするときは、以下のようなエラーメッセージが出る。
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    fe:28:cf:63:05:49:56:df:55:78:ed:37:90:06:2a:5f.
    Please contact your system administrator.
    Add correct host key in /home/mochikoAsTech/.ssh/known_hosts to get rid of this message.
    Offending key in /home/mochikoAsTech/.ssh/known_hosts:1
    RSA host key for 192.168.146.128 has changed and you have requested strict checking.
    Host key verification failed.
    • ログインできないときのWinSCPのエラーメッセージ

      WinSCPでは特にエラーが出たり、ログインを取りやめたりはしない模様。
    • ログインできないときの/var/log/secure のエラーメッセージ
    sshd[5921]: Connection closed by 192.168.146.128 
    • ログインできない原因

      ログイン先サーバの/etc/sshの下にあるホストキーが変わったため。
    • 解説

      接続元のサーバがホスト認証(=ホストキーを使って「今ログインしようとしているサーバは、前回ログインしたサーバと同じサーバか?」を確認すること)をして、「前回ログインしたサーバとは別のサーバだ!なりすましかも!危険!」と判断したので、接続を取りやめた。接続先のサーバ/etc/ssh以下にあるホストキーが変わってしまうとこうなる。

    • 解決方法

      接続元のサーバで、ホームディレクトリの.ssh/known_hostsから該当行を削除すればログインできるようになる。viで直接編集しても、ssh-keygenコマンドを使ってもOK。
      削除した後に再度ログインしようとすると、「初めて接続するサーバだが接続してもよいか?」と聞かれるので、yesを押してEnterするとknown_hostsにホストキーが登録され、接続できるようになる。
    $ ssh-keygen -R 192.168.146.128  ←接続できなかったサーバのホスト名かIPアドレスを指定
    /home/mochikoAsTech/.ssh/known_hosts updated.  ←known_hostsから削除される
    Original contents retained as /home/mochikoAsTech/.ssh/known_hosts.old
    $ ssh 192.168.146.128  ←再度接続してみる
    The authenticity of host '192.168.146.128 (192.168.146.128)' can't be established.
    RSA key fingerprint is fe:28:cf:63:05:49:56:df:55:78:ed:37:90:06:2a:5f.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.146.128' (RSA) to the list of known hosts.
    Last login: Sat Mar  8 11:40:32 2014 from 192.168.146.128 

    以上、サーバにログインできない!ときのよくある原因と解決方法でした。
    間違いとか補足とかありましたら、@mochikoAsTechまでお知らせください。