AWSにSSHログインでToo many authentication failuresエラー
リンク先の記事のおかげで、問題が解決した件を記します。
情報セキュリティに敏感になってきたので、漏洩リスクを下げるために、SSHキーを使いわけるようになりました。
Publicキーについても、GithubやAWSなど、登録するサービスが有るのですが、別々にするようにしています。
そしたらですね、エラーがでるようになりました
Too many authentication failures for username
なぜそうなるかというと、Gnomeの環境では、.sshの下にあるSSHキーを、ログインのときにすべてssh-agentに登録するわけです。
sshログインの時は、ssh-agentに登録されているキーを順次適用してログインできるか試します。
あまりたくさんのキーが.sshの下にあると、上記のエラーになるというわけです(たくさんと言っても、5ことか6こでエラーになります)
Amazon Web Service EC2を使うと、ログイン用のKey Pairを、Webから創ることができます。
sshコマンドで、 -i オプションをつけることで指定できる、とされています。
しかし、上記のような事象が起こる環境ですと、-i オプションにつけた鍵を試す「前に」,ssh-agentに登録された鍵を試してエラーになっちゃうので、ログインできないという事象が起こります。
そのため、ここ1週間くらい、ちょっと悩んでしまいました。(調べる余裕なかったし)
でも割合簡単に解決しました。
man ssh_config
しますと、つぎのような記述があります。
IdentitiesOnly Specifies that ssh(1) should only use the authentication identity files configured in the ssh_config files, even if ssh-agent(1) offers more identities. The argument to this keyword must be “yes” or “no”. This option is intended for situations where ssh-agent offers many different identities. The default is “no”. IdentityFile Specifies a file from which the user's DSA, ECDSA or DSA authentication identity is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2. Additionally, any identities represented by the authentication agent will be used for authentication. ssh(1) will try to load certificate information from the filename obtained by appending -cert.pub to the path of a specified IdentityFile. The file name may use the tilde syntax to refer to a user's home directory or one of the following escape characters: ‘%d’ (local user's home directory), ‘%u’ (local user name), ‘%l’ (local host name), ‘%h’ (remote host name) or ‘%r’ (remote user name). It is possible to have multiple identity files specified in configuration files; all these identities will be tried in sequence. Multiple IdentityFile directives will add to the list of identities tried (this behaviour differs from that of other configuration directives).
この2つのオプションを使えば良さそうです。
簡単には、sshコマンドを起動するときにオプションを付けます。
ssh -o IdentitiesOnly=yes -i aws-key-pair.pem -l ubuntu ec2-xx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com
永続的に有効にするには、.ssh/config
ファイルに記述します。
Host *
IdentitiesOnly
Host *.amazonaws.com
IdentityFile ~/.aws/aws-key-pair.pem
ただし、これですと、すべてのsshする可能性のあるホストに対して、IdentityFileオプションを記述しないといけません。
そこで、
Host *.us-west-2.amazonaws.com
IdentityFile ~/.aws/aws-key-pair.pem
IdentitiesOnly
のように、.ssh配下の鍵以外を使う場合だけ、これらの指定を明示的に行うようにします。
この記事へのトラックバック アドレス
トラックバック URL (右をクリックし、ショートカット/リンクをコピーして下さい)
モデレーション待ちのフィードバック
この投稿にはモデレーション待ちのフィードバックが 198 件あります....