ペットプロジェクト用のAWS EC2 Ubuntuインスタンスがあります。ある日ログインしようとすると、次のエラーが発生します。
~$ ssh -i"/home/kona/.ssh/aws_kona_id" [email protected] -p22
Enter passphrase for key '/home/kona/.ssh/aws_kona_id':
Received disconnect from [IP address] port 22:2: Too many authentication failures
Disconnected from [IP address] port 22
~$
kona
は、このサーバーで有効になっている唯一のアカウントです
サーバーを再起動し、IPアドレスを変更して、待機しました。
編集:
kona@arcticjieer:~$ ssh -o "IdentitiesOnly yes" -i"/home/kona/.ssh/aws_kona_id" -v [email protected] -p22
OpenSSH_8.1p1 Debian-1, OpenSSL 1.1.1d 10 Sep 2019
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ec2-3-17-146-113.us-east-2.compute.amazonaws.com [3.17.146.113] port 22.
debug1: Connection established.
debug1: identity file /home/kona/.ssh/aws_kona_id type -1
debug1: identity file /home/kona/.ssh/aws_kona_id-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.1p1 Debian-1
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
debug1: Authenticating to ec2-3-17-146-113.us-east-2.compute.amazonaws.com:22 as 'kona'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: Host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ecdsa-sha2-nistp256 SHA256:D3sIum9dMyyHNjtnL7Pr4u5DhmP5aQ1jaZ8Adsdma9E
debug1: Host 'ec2-3-17-146-113.us-east-2.compute.amazonaws.com' is known and matches the ECDSA Host key.
debug1: Found key in /home/kona/.ssh/known_hosts:41
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /home/kona/.ssh/aws_kona_id explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/kona/.ssh/aws_kona_id
Enter passphrase for key '/home/kona/.ssh/aws_kona_id':
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
[email protected]: Permission denied (publickey).
kona@arcticjieer:~$
このエラーは通常、ssh-agent
に読み込まれたキーが多すぎるがあることを意味します。
説明:sshクライアントは、ssh-agent
で指定されたキーを使用する前に、-i aws_kona_id
のすべてのキーを1つずつ使用しようとします。はい、直感に反しています。そのような各試行は認証失敗としてカウントされ、デフォルトでは5回の試行のみがSSHサーバーで許可されているため、次のエラーが表示されます。認証失敗が多すぎます。
ssh -v
で試行されたID(キー)を表示できます。
解決策は、コマンドラインで指定されたIDのみを使用するようにssh
に指示することです。
ssh -o "IdentitiesOnly yes" -i ~/.ssh/aws_kona_id -v [email protected]
それでも解決しない場合は、そのコマンドの出力をここに投稿してください。
この場合、MLuの答えはおそらく正しいと思います。これを検証する方法は、サーバーに正しいキーを指定してコマンドラインのsshコマンドを実行することです。
ssh -i "keyfile.pem" [email protected]
それが機能せず、「サーバーからロックアウトされました、助けて!」という一般的なケースでは、一般的に推奨されるアプローチは、ボリュームをデータボリュームとして別のインスタンスにマウントすることです。
アクセスできるまで繰り返します。アクセスできない場合は、少なくともデータにアクセスできます。
デフォルトでは、SSHは使用可能なすべてのSSHキーを試行します。それは「ランダムな」順序で行われます。 -i
オプションを指定すると、SSHはそのキーファイルを試行するキーのリストに追加するように指示されます。
しない:
何が起こっているのか(多くのキーを使用する場合はかなり多い)は、SSHが機能しないランダムなキーをいくつか試し、サーバーがクライアントからの認証試行の受け入れを停止することです。
SSHに「onlythis key」を使用するように指示する場合は、IdentitiesOnly yes
オプションを指定する必要があります。
ssh -o "IdentitiesOnly yes" -i"/home/kona/.ssh/aws_kona_id" [email protected] -p22
IdentitiesOnly yes
は、明示的に指定されたキーのみを使用するようにSSHに指示します(この場合、-i
を使用して指定されたキーのみ)。
これが、さまざまなホストにカスタムキーを使用する場合、常に常にホスト構成を.ssh/config
で定義するためです。これにより、簡単なエイリアスを使用できるようになり、さらに重要なことに、IdentitiesOnly yes
と、この種のミスを回避するために使用するキーを指定できます。
Host kona.server
Hostname server.akona.me
IdentityFile ~/.ssh/aws_kona_id
IdentitiesOnly yes
Port 22
User kona
上記の.ssh/config
を使用すると、次のように簡単にサーバーにログインできます。
$ ssh kona.server
追加した詳細な出力は、Permission denied
に対して~/.ssh/aws_kona_id
を取得していることを示しています。
これはToo many authentication failures
とはまったく別の問題です。
おそらく、あなたのaws_kona_id
はユーザーにとって適切なキーではありません(そのため、ssh-agentから他のすべてのIDを試し続けました)、またはデフォルトのEC2ユーザーアカウントを使用する必要があります。 ec2-user
またはubuntu
または何を持っていますか。
それらのアカウントを試すか、kona
ユーザーに適切なキーを見つけてください。
Ubuntu EC2インスタンスには、sshキーでインストールされたubuntuユーザーアカウントがあります。
このアカウントを削除しなくても、引き続き接続できます。
ssh -i "/home/kona/.ssh/aws_kona_id" [email protected]
Sudo -i
の後でアカウントの問題を修正し、/home/kona/.ssh/authorized_keys
を調査してください