« vagrantで作業中に、scpしたくなったらポリゴン処理 »

AWSにSSHログインでToo many authentication failuresエラー

2014/09/06

  14:12:00 by , Categories: Freesoftware and Open Source Software, Linux

Link: http://theandystratton.com/2012/ssh-returns-too-many-authentication-failures-error-hostgator

リンク先の記事のおかげで、問題が解決した件を記します。

情報セキュリティに敏感になってきたので、漏洩リスクを下げるために、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配下の鍵以外を使う場合だけ、これらの指定を明示的に行うようにします。

Trackback address for this post

Trackback URL (right click and copy shortcut/link location)

Feedback awaiting moderation

This post has 195 feedbacks awaiting moderation...


Form is loading...