原因と解決策
次の3パターンが考えられる
- 間違った鍵で接続しようとしている。キーペアは正しいか確認する
- 間違ったユーザー名で接続しようとしている。正しいユーザー名かどうか確認する
- ホスト名が間違っている。ホスト名が正しいかどうか確認する。
これでもダメな場合
インスタンス内のSSH設定を確認
/etc/ssh/sshd_config
このあたりを確認
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords yes
設定を変えたら再起動
$ sudo service sshd restart
各項目補足
とりあえず PubkeyAuthentication 以外は no にしておいたほうが良い。
PermitRootLogin
rootユーザーでのログインを許可する設定。基本的にnoにすべき。
アプリケーションの都合でどうしてもrootユーザーでのログインが必要な場合はMatchを使ってクライアントを絞る。
PermitRootLogin no
Match Address 10.0.0.1
PermitRootLogin yes
PubkeyAuthentication
公開鍵認証を許可する設定。RSA鍵で認証するならyes。
noになってるとたぶんPermission denied(publickey)にはならずにパスワードを聞かれる。
PasswordAuthentication
パスワード認証を許可する設定。yesだとブルートフォース攻撃の的に。
PermitEmptyPasswords
パスワード認証の場合に空パスワードを許可するかどうか。
鍵のパスフレーズとは無関係。
おまけ
ChallengeResponseAuthentication
チャレンジレスポンス認証を許可する設定。noにしておく。
これがyesになっているとパスワードでログインできてしまう。ブルートフォース攻撃の的にされる。
AuthorizedKeysFile
鍵認証でのログインを許可するクライアントの共有鍵を定義するファイル。通常は %h/.ssh/authorized_keys とかになってるはず。
エラーメッセージがPermission denied (publickey). って出る場合は大体このauthorized_keysに書かれている公開鍵とクライアントの鍵が合ってないのが原因。
↓
- 間違った鍵で接続しようとしている。キーペアは正しいか確認する
- 間違ったユーザー名で接続しようとしている。正しいユーザー名かどうか確認する
- ホスト名が間違っている。ホスト名が正しいかどうか確認する。