Вопрос или проблема
Я пытаюсь создать пользователя на EC2, вот шаги, которые я выполнил.
root$ adduser abc --disabled-password
root$ sudo su abc
abc$ mkdir /home/abc/.ssh
abc$ chmod 700 /home/abc/.ssh
abc$ touch /home/abc/.ssh/authorized_keys
abc$ chmod 600 /home/abc/.ssh/authorized_keys
abc$ cat id_rsa.pub >> /home/abc/.ssh/authorized_keys
Затем я попытался войти в эту EC2 как пользователь, но получил следующую ошибку:
local$ ssh [email protected]
[email protected]: Доступ запрещен (publickey).
Затем я попробовал
local$ ssh [email protected] -vvv
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Чтение конфигурационных данных /Users/abc/.ssh/config
debug1: /Users/abc/.ssh/config строка 33: Применение параметров для *
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 48: Применение параметров для *
debug2: ssh_connect_direct: needpriv 0
debug1: Подключение к 45.121.95.191 порт 22.
debug1: Соединение установлено.
debug1: файл удостоверения /Users/abc/.ssh/id_rsa тип 0
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_rsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_dsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_dsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_ecdsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_ecdsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_ed25519 тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл удостоверения /Users/abc/.ssh/id_ed25519-cert тип -1
debug1: Локальная строка версии SSH-2.0-OpenSSH_7.6
debug1: Удаленная версия протокола 2.0, удаленная версия программного обеспечения OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10
debug1: совпадение: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10 pat OpenSSH_6.6.1* compat 0x04000000
debug3: fd 5 является O_NONBLOCK
debug1: Аутентификация на 45.121.95.191:22 как 'abc'
debug3: hostkeys_foreach: чтение файла "/Users/abc/.ssh/known_hosts"
debug3: record_hostkey: найден ключ типа ECDSA в файле /Users/abc/.ssh/known_hosts:6
debug3: load_hostkeys: загружено 1 ключ из 45.121.95.191
.
.
.
debug1: Хост '45.121.95.191' известен и соответствует ключу хоста ECDSA.
debug1: Найден ключ в /Users/abc/.ssh/known_hosts:6
debug3: отправить пакет: тип 21
debug2: set_newkeys: режим 1
debug1: обновить ключи после 4294967296 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидание SSH2_MSG_NEWKEYS
debug3: получить пакет: тип 21
debug1: SSH2_MSG_NEWKEYS получено
debug2: set_newkeys: режим 0
debug1: обновить ключи после 4294967296 блоков
debug2: ключ: /Users/abc/.ssh/id_rsa (0x7fa1a650aa30)
debug2: ключ: /Users/abc/.ssh/id_dsa (0x0)
debug2: ключ: /Users/abc/.ssh/id_ecdsa (0x0)
debug2: ключ: /Users/abc/.ssh/id_ed25519 (0x0)
debug3: отправить пакет: тип 5
debug3: получить пакет: тип 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT получено
debug3: отправить пакет: тип 50
debug3: получить пакет: тип 51
debug1: Аутентификации, которые могут продолжиться: publickey
debug3: начать заново, передали другой список publickey
debug3: предпочтительный publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: оставшиеся предпочтения: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Следующий метод аутентификации: publickey
debug1: Предлагаем открытый ключ: RSA SHA256:aQVTb3WY7P8cEgl2CF5f0XOUDtDbOvgj1SMMwPNlSfg /Users/abc/.ssh/id_rsa
debug3: send_pubkey_test
debug3: отправить пакет: тип 50
debug2: мы отправили пакет с открытым ключом, ждем ответа
debug3: получить пакет: тип 51
debug1: Аутентификации, которые могут продолжиться: publickey
debug1: Пытаюсь использовать закрытый ключ: /Users/abc/.ssh/id_dsa
debug3: нет такой идентичности: /Users/abc/.ssh/id_dsa: Нет такого файла или каталога
debug1: Пытаюсь использовать закрытый ключ: /Users/abc/.ssh/id_ecdsa
debug3: нет такой идентичности: /Users/abc/.ssh/id_ecdsa: Нет такого файла или каталога
debug1: Пытаюсь использовать закрытый ключ: /Users/abc/.ssh/id_ed25519
debug3: нет такой идентичности: /Users/abc/.ssh/id_ed25519: Нет такого файла или каталога
debug2: мы не отправили пакет, отключить метод
debug1: Больше методов аутентификации не осталось.
[email protected]: Доступ запрещен (publickey).
Даже ssh -i /Users/abc/.ssh/id_rsa [email protected]
дает ту же ошибку.
Я пытаюсь понять, почему аутентификация пользователя не работает, подозреваю, что что-то не так с /home/abc/.ssh/authorized_keys
. Кто-нибудь может помочь?
ОБНОВЛЕНИЕ:
Также это из /var/log/auth.log
Адрес ${MyPublicIP} сопоставляется с ${InternetProvider}, но это не сопоставляется обратно с адресом - ВОЗМОЖНА ПОПЫТКА ВЗЛОМА!
Соединение закрыто ${MyPublicIP} [preauth]
Вам нужно отладить на сервере, ssh-клиент не может сказать вам много.
Посмотрите на запись в /etc/shadow. Учетная запись отключена? Второе поле “*” или “!”?
Редактировать:
С вашего лога кажется, что проблема связана с проверкой DNS. Проверка DNS может вызвать больше проблем, чем решить (до тех пор, пока вы не делаете входы на основе DNS-имени хоста, что, надеюсь, никто не делает в наши дни).
В /etc/ssh/sshd_config установите UseDNS no
. Возможно, вам также нужно GSSAPIAuthentication no
.
Ответ или решение
Ошибки аутентификации SSH, сопровождающиеся сообщением "Permission denied (publickey)", могут возникнуть по нескольким причинам, особенно при создании нового пользователя на EC2. Давайте разберем ситуацию на основе предоставленного описания шагов, а также учитывая сообщения об ошибках и логи.
1. Проверка настроек пользователя
Вы создали нового пользователя abc
, отключив его пароль. Однако это может привести к проблемам с аутентификацией, если SSH не настроен на прием публичных ключей для данного пользователя. Проверьте файл /etc/shadow
, чтобы убедиться, что у нового пользователя не установлен замок (символы *
или !
во втором поле), которые бы запрещали вход в систему.
2. Проверка прав доступа
Вы правильно создали директорию .ssh
и файл authorized_keys
, установив права доступа:
- Для директории
.ssh
:chmod 700 /home/abc/.ssh
- Для файла
authorized_keys
:chmod 600 /home/abc/.ssh/authorized_keys
Однако помимо этого, необходимо убедиться, что сам каталог пользователя /home/abc
также имеет правильные права. Также основной каталог пользователи (в данном случае /home/abc
) не должен иметь доступ для других пользователей (должен иметь права, например, chmod 755 /home/abc
). Убедитесь, что права на коротком пути не разрешают доступ для других пользователей.
3. Проверка файла authorized_keys
Проверьте содержимое файла authorized_keys
для пользователя abc
. Убедитесь, что публичный ключ добавлен правильно и без лишних пробелов или символов. Вы могли использовать cat id_rsa.pub >> /home/abc/.ssh/authorized_keys
, однако важно использовать команду echo
или правильное копирование, чтобы избежать ошибок. Убедитесь, что ключ находится на отдельной строке.
4. Параметры SSH на сервере
Как было указано в обновлении, необходимо проверить конфигурацию SSH. Откройте файл конфигурации:
sudo nano /etc/ssh/sshd_config
И проверьте следующие параметры:
- Установить
UseDNS no
: это позволяет избежать проблем, связанных с проверкой обратного DNS. - Установить
GSSAPIAuthentication no
: это может помочь, если у вас есть проблемы с аутентификацией, основывающейся на GSSAPI.
После внесения изменений перезапустите SSH:
sudo systemctl restart sshd
5. Проверка DNS и логов
Сообщение из /var/log/auth.log
указывает на проблемы с обратным DNS-разрешением. Это может быть не критично для аутентификации, однако стоит проверить настройки вашей сети и убедиться, что DNS правильно настроен. Если ваша цель только доступ по SSH, объявленное "possible break-in attempt" не должно повлиять на аутентификацию. Тем не менее, желательно решить эту проблему, возможно, с помощью вашего провайдера.
6. Попробуйте аутентификацию с использованием ключа
При выполнении команды SSH попробуйте явно указать путь к вашему приватному ключу:
ssh -i /path/to/id_rsa [email protected]
Это гарантирует, что используется именно тот ключ, который вы настроили для пользователя abc
.
7. Заключение
Если после выполнения всех применений вышеперечисленных рекомендаций проблема не решена, то возможно, необходимо проверить настройки сети, фаервола или обратиться к провайдеру VPS. Убедитесь, что в конфигурации ваш SSH установлен правильно и пользователь настроен для доступа через ключ.
Эти шаги должны помочь вам устранить проблему с аутентификацией SSH для нового пользователя на EC2.