У меня есть экземпляр AWS EC2 Ubuntu для домашних проектов. Когда я однажды попытался войти в систему, это привело к ошибке:
~$ ssh -i"/home/kona/.ssh/aws_kona_id" kona@server.akona.me -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 kona@ec2-3-17-146-113.us-east-2.compute.amazonaws.com -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: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com 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.
kona@ec2-3-17-146-113.us-east-2.compute.amazonaws.com: Permission denied (publickey).
kona@arcticjieer:~$
Эта ошибка обычно означает, что у вас есть слишком много ключей загружено в ваш ssh-agent
.
Пояснение: Ваш ssh-клиент попытается использовать все ключи из ssh-agent
один за другим, прежде чем он сможет использовать ключ, указанный с помощью -i aws_kona_id
. Да, это немного нелогично. Потому что каждая такая попытка считается ошибка аутентификации и по умолчанию сервер SSH разрешает только 5 попыток, вы получаете сообщение об ошибке: Слишком много ошибок аутентификации.
Вы можете просмотреть попытки идентификации (ключей) с помощью ssh -v
.
Решение - сказать ssh
чтобы использовать только идентификаторы, указанные в командной строке:
ssh -o "IdentitiesOnly yes" -i ~/.ssh/aws_kona_id -v kona@server.akona.me
Если это не поможет, опубликуйте вывод этой команды здесь.
Я думаю, что в этом случае ответ MLu, возможно, правильный. Способ проверить это - запустить команду ssh в командной строке, указав правильный ключ для сервера.
ssh -i "keyfile.pem" ec2-user@1.2.3.4
Если это не работает и в общем случае «Я заблокирован для доступа к моему серверу, помогите!», Обычно рекомендуется подключить том к другому экземпляру как том с данными.
Повторяйте, пока не получите доступ. Если вы не можете получить доступ, это, по крайней мере, дает вам доступ к вашим данным.
SSH по умолчанию пробует все доступные SSH-ключи. Это происходит в «случайном» порядке. Указание -i
опция просто указывает SSH добавить этот ключевой файл в список ключей, которые нужно попробовать.
Оно делает не:
Что в конечном итоге происходит (довольно часто, если вы используете много ключей), так это то, что SSH пробует пару случайных ключей, которые не работают, и сервер перестает принимать попытки аутентификации от вашего клиента.
Если вы хотите, чтобы SSH "использовал только этот ключ "необходимо указать IdentitiesOnly yes
вариант:
ssh -o "IdentitiesOnly yes" -i"/home/kona/.ssh/aws_kona_id" kona@server.akona.me -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), или вы должны использовать учетную запись пользователя EC2 по умолчанию, например ec2-user
или ubuntu
или что у тебя.
Попробуйте эти учетные записи или попробуйте найти правильный ключ для kona
пользователь.
У экземпляра Ubuntu EC2 есть учетная запись пользователя ubuntu, установленная с вашим ключом ssh.
Если вы не удалите эту учетную запись, вы все равно сможете подключиться к:
ssh -i "/home/kona/.ssh/aws_kona_id" ubuntu@server.akona.me
И исправьте проблему с учетной записью после sudo -i
и расследование /home/kona/.ssh/authorized_keys
просто запустите свой ssh-агент
eval "$(ssh-agent -s)"
затем
добавьте свой ключ rsa
ssh-add id_rsa
затем попробуйте снова подключиться к вашему серверу