Вопрос или проблема
У меня есть экземпляр AWS EC2, который работает. Я смог подключиться, используя свои ключи chomed (-r--------
) через MobaXTerm и SSH (Ubuntu для Windows) (.pem ключ) и putty (.ppk ключ).
Я также работаю на сервере, используя IDL (Rstudio server), так что экземпляр работает. В какой-то момент я не смог снова подключиться, используя Moba+SSH+Putty, не внося никаких изменений в ключи или внутренние конфигурации на экземпляре.
Вот ошибки подключения, которые я получил от этих программ (снова, не меняя ничего):
- MobaXterm:
Сервер отклонил наш ключ --- Нет поддерживаемых методов аутентификации (сервер отправил: publickey)
- Putty:
Сервер отклонил наш ключ --- Нет поддерживаемых методов аутентификации (сервер отправил: publickey)
- ssh:
Доступ запрещен (publickey).
Я видел несколько постов, но они требуют подключаться к серверу, чтобы изменить файлы/разрешения изнутри. Я могу получить доступ к некоторым системным файлам с помощью IDL (Rstudio), но как обычный пользователь, не root.
Есть идеи?
ИЗМЕНЕНИЕ: Следуя предложению @Jos, я использовал параметр -vv. Вот ответ
`
~$: ssh -vv -i "key.pem" [email protected]
OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f 31 Mar 2020
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: include /etc/ssh/ssh_config.d/*.conf не совпадает с файлами
debug1: /etc/ssh/ssh_config строка 21: Применение опций для *
debug2: разрешение "ec2-ip.us-east-2.compute.amazonaws.com" порт 22
debug2: ssh_connect_direct
debug1: Подключение к ec2-ip.us-east-2.compute.amazonaws.com [ip] порт 22.
debug1: Соединение установлено.
debug1: файл удостоверения key.pem тип -1
debug1: файл удостоверения key.pem-cert тип -1
debug1: Локальная версия строки SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4
debug1: Удаленная версия протокола 2.0, удаленная версия программного обеспечения OpenSSH_8.9p1 Ubuntu-3ubuntu0.3
debug1: совпадение: OpenSSH_8.9p1 Ubuntu-3ubuntu0.3 пат OpenSSH* совместимость 0x04000000
debug2: fd 3 установка O_NONBLOCK
debug1: Аутентификация на ec2-ip.us-east-2.compute.amazonaws.com:22 как 'ubuntu'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug2: местное предложение KEXINIT клиента
debug2: Алгоритмы KEX: curve25519-sha256,[email protected], ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, ext-info-c
debug2: алгоритмы хост-ключей: [email protected],[email protected],[email protected], ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected], ssh-ed25519,[email protected], rsa-sha2-512, rsa-sha2-256, ssh-rsa
debug2: шифры ctos: [email protected], aes128-ctr, aes192-ctr, aes256-ctr,[email protected],[email protected]
debug2: шифры stoc: [email protected], aes128-ctr, aes192-ctr, aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected], hmac-sha2-256, hmac-sha2-512, hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: сжатие ctos: none,[email protected], zlib
debug2: сжатие stoc: none,[email protected], zlib
debug2: языки ctos:
debug2: языки stoc:
debug2: first_kex_follows 0
debug2: зарезервировано 0
debug2: предложение kex сервера
debug2: Алгоритмы KEX: curve25519-sha256,[email protected], ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521,[email protected], diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256
debug2: алгоритмы хост-ключей: rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
debug2: шифры ctos: [email protected], aes128-ctr, aes192-ctr, aes256-ctr,[email protected],[email protected]
debug2: шифры stoc: [email protected], aes128-ctr, aes192-ctr, aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected], hmac-sha2-256, hmac-sha2-512, hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected], hmac-sha2-256, hmac-sha2-512, hmac-sha1
debug2: сжатие ctos: none,[email protected]
debug2: сжатие stoc: none,[email protected]
debug2: языки ctos:
debug2: языки stoc:
debug2: first_kex_follows 0
debug2: зарезервировано 0
debug1: kex: алгоритм: curve25519-sha256
debug1: kex: алгоритм хост-ключа: ecdsa-sha2-nistp256
debug1: kex: сервер->клиент шифр: [email protected] MAC: <implicit> сжатие: none
debug1: kex: клиент->сервер шифр: [email protected] MAC: <implicit> сжатие: none
debug1: ожидание SSH2_MSG_KEX_ECDH_REPLY
debug1: Основная ключевая установка сервера: ecdsa-sha2-nistp256 SHA256:5dFj4Av5Ln0oYtTRBYdcFKPe3hlTb5Fr9Q4Iok056UM
debug1: Хост 'ec2-ip.us-east-2.compute.amazonaws.com' известен и соответствует ECDSA хост-ключу.
debug1: Найден ключ в /home/user/.ssh/known_hosts:7
debug2: set_newkeys: режим 1
debug1: смена ключа через 134217728 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидание SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS получено
debug2: set_newkeys: режим 0
debug1: смена ключа через 134217728 блоков
debug1: Будет предпринята попытка ключа: key.pem явный
debug2: pubkey_prepare: готово
debug1: SSH2_MSG_EXT_INFO получено
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected], ssh-rsa, rsa-sha2-256, rsa-sha2-512, ssh-dss, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521,[email protected],[email protected]>
debug1: kex_input_ext_info: [email protected] (неизвестно)
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT получено
debug1: Аутентификация, которая может продолжаться: publickey
debug1: Следующий метод аутентификации: publickey
debug1: Попытка приватного ключа: key.pem
debug2: мы отправили пакет publickey, ждем ответа
debug1: Аутентификация, которая может продолжаться: publickey
debug2: мы не отправили пакет, отключить метод
debug1: Нет других методов аутентификации для попытки.
[email protected]: Доступ запрещен (publickey).`
Через некоторое время я понял:
-
Я изменил свой домашний каталог (пользователь ubuntu), выполнив команду:
sudo chown -R shiny:shiny /home/ubuntu
, чтобы получить разрешения на запись. -
Я смог получить доступ к своей машине, используя пользователя
root
в Mobaxterm или ssh:ssh -vv -i "key.pem" [email protected]
-
Затем снова изменил право собственности на домашний каталог пользователя ubuntu:
sudo chown -R ubuntu:ubuntu /home/ubuntu
Ответ или решение
Ошибка, с которой вы столкнулись — "Server refused our key – No supported authentication methods available (server sent: publickey)" — индикатор проблем с аутентификацией по SSH. Давайте разберем возможные причины возникновения этой ситуации и пути их устранения на вашем сервере Ubuntu, работающем на AWS EC2.
Фон и Условия
Вы упоминали, что до появления проблемы смогли подключиться к вашему экземпляру EC2 с использованием вашей пары ключей (.pem и .ppk), однако в какой-то момент доступ к серверу был утрачен. Важно отметить, что любые изменения в файлах конфигурации, разрешениях или владельцах каталогов и файлов пользователя могут вызвать проблемы с доступом.
Анализ Ситуации
Во-первых, рассмотрим ключевые моменты:
-
Разрешения на Домашний Каталог: Вы изменили владельца домашнего каталога пользователя Ubuntu с помощью команды
sudo chown -R shiny:shiny /home/ubuntu
. Это действие могло нарушить необходимые настройки SSH, так как SSH требует, чтобы домашний каталог пользователя имел определенные права доступа, обычно700
. Убедитесь, что путь/home/ubuntu
имеет правильные разрешения:sudo chmod 700 /home/ubuntu
-
Владельцы Файлов Ключей: Убедитесь, что файлы ключей (.pem) имеют правильные разрешения. Например:
chmod 400 key.pem
-
Логи SSH: Вы привели вывод из команды с опцией
-vv
, который показывает, что ваш сервер принимает только аутентификацию с помощью публичного ключа. Это подтверждает, что причина проблемы связана с ключами. Обратите внимание на строкуdebug1: Trying private key: key.pem
, что указывает на попытку использования ключа, но безуспешно.
Устранение
Для решения данной проблемы выполните следующие шаги:
-
Проверка и Сброс Владельца: Вы уже исправили владельца домашнего каталога обратно на
ubuntu
. Это хорошо, но убедитесь также, что права на.ssh
каталог установлены корректно:sudo chown -R ubuntu:ubuntu /home/ubuntu/.ssh sudo chmod 700 /home/ubuntu/.ssh
-
Проверка Файла Authorized Keys: Убедитесь, что ваш публичный ключ находится в файле
authorized_keys
пользователяubuntu
. Используйте команду:cat /home/ubuntu/.ssh/authorized_keys
Если там нет вашего ключа, добавьте его:
echo "ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ" >> /home/ubuntu/.ssh/authorized_keys
-
Перезапуск SSH Демона: Хотя это может не всегда быть необходимо, порой полезно перезапустить SSH сервер:
sudo systemctl restart ssh
-
Проверка конфигурации SSH: Если все еще возникли проблемы, проверьте файл конфигурации
/etc/ssh/sshd_config
. Убедитесь, что следующие параметры верны:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
После внесения изменений не забудьте перезапустить SSH сервис.
Заключение
Эти шаги должны помочь вам восстановить доступ к вашему EC2 экземпляру. Поскольку вы также имеете возможность подключиться как root
, проделанные шаги являются безопасными для исполения и помогут устранить проблемы с аутентификацией.
Если проблема не решилась, стоит обратить внимание на сетевые настройки, такие как правила безопасности в AWS (Security Groups), которые могут блокировать порт 22. Убедитесь, что ваш IP включен в список разрешенных для входящих соединений по SSH.
Соблюдая вышеуказанные рекомендации, вы сможете восстановить доступ к вашему серверу, что обеспечит его эффективное использование в будущем.