- Вопрос или проблема
- Ответ или решение
- Ответ на проблему "Permission denied (publickey)" в Debian
- 1. Проверка SSH ключей
- 2. Проверьте наличие публичного ключа на сервере
- 3. Проверка конфигурации SSH
- 4. Проверка SSH-агента
- 5. Диагностика с помощью флага -v
- 6. Убедитесь в корректности пользовательских данных
- Заключение
Вопрос или проблема
Я попытался подключиться к серверу через SSH. После перемещения файла id_rsa в папку ~/.ssh я выполнил команду ‘ssh -v [email protected]‘. Ранее я мог подключаться к серверу таким образом, но в течение нескольких дней появлялось следующее сообщение о том, что подключиться не удается.
(base) pills@rpc model $ ssh -v [email protected]
Идентификатор добавлен: /home/pills/.ssh/id_rsa (user@lion)
OpenSSH_9.2p1 Debian-2+deb12u3, OpenSSL 3.0.14 4 июня 2024
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: include /etc/ssh/ssh_config.d/*.conf совпадений не найдено
debug1: /etc/ssh/ssh_config строка 21: Применение параметров для *
debug1: Подключение к lion.cs.utep.edu [139.108.156.68] порт 22.
debug1: Подключение установлено.
debug1: файл идентификации /home/pills/.ssh/id_rsa тип 0
debug1: файл идентификации /home/pills/.ssh/id_rsa-cert тип -1
debug1: файл идентификации /home/pills/.ssh/id_ecdsa тип -1
debug1: файл идентификации /home/pills/.ssh/id_ecdsa-cert тип -1
debug1: файл идентификации /home/pills/.ssh/id_ecdsa_sk тип -1
debug1: файл идентификации /home/pills/.ssh/id_ecdsa_sk-cert тип -1
debug1: файл идентификации /home/pills/.ssh/id_ed25519 тип -1
debug1: файл идентификации /home/pills/.ssh/id_ed25519-cert тип -1
debug1: файл идентификации /home/pills/.ssh/id_ed25519_sk тип -1
debug1: файл идентификации /home/pills/.ssh/id_ed25519_sk-cert тип -1
debug1: файл идентификации /home/pills/.ssh/id_xmss тип -1
debug1: файл идентификации /home/pills/.ssh/id_xmss-cert тип -1
debug1: файл идентификации /home/pills/.ssh/id_dsa тип -1
debug1: файл идентификации /home/pills/.ssh/id_dsa-cert тип -1
debug1: Локальная версия SSH: SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u3
debug1: Удаленная версия протокола 2.0, удаленная версия программного обеспечения OpenSSH_8.4p1 Debian-5+deb11u3
debug1: compat_banner: совпадение: OpenSSH_8.4p1 Debian-5+deb11u3 pat OpenSSH* compat 0x04000000
debug1: Аутентификация на lion.cs.utep.edu:22 как 'user'
debug1: load_hostkeys: fopen /home/pills/.ssh/known_hosts2: Нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: Нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: Нет такого файла или каталога
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug1: kex: алгоритм: curve25519-sha256
debug1: kex: алгоритм ключа хоста: ssh-ed25519
debug1: kex: шифрование сервер->клиент: [email protected] MAC: <implicit> сжатие: none
debug1: kex: шифрование клиент->сервер: [email protected] MAC: <implicit> сжатие: none
debug1: ожидание SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY получено
debug1: Ключ хоста сервера: ssh-ed25519 SHA256:FTkOSkSndLWDBx/JFV00SsRFAxxLB7yy3UshUZZJqUs
debug1: load_hostkeys: fopen /home/pills/.ssh/known_hosts2: Нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: Нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: Нет такого файла или каталога
debug1: Хост 'dandelion.cs.utep.edu' известен и соответствует ключу ED25519.
debug1: Найден ключ в /home/pills/.ssh/known_hosts:1
debug1: ssh_packet_send2_wrapped: сброс последовательного номера отправки 3
debug1: переустановка ключа после 134217728 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидание SSH2_MSG_NEWKEYS
debug1: ssh_packet_read_poll2: сброс последовательного номера чтения 3
debug1: SSH2_MSG_NEWKEYS получено
debug1: переустановка ключа после 134217728 блоков
debug1: get_agent_identities: привязка агента к ключу хоста
debug1: get_agent_identities: агент вернул 1 ключ
debug1: Попытка ключа: /home/pills/.ssh/id_rsa RSA SHA256:h43tJtgvWzOaAUVvNnY9WRVDAVbeBulE6hDmGS0b0Ag агент
debug1: Попытка ключа: /home/pills/.ssh/id_ecdsa
debug1: Попытка ключа: /home/pills/.ssh/id_ecdsa_sk
debug1: Попытка ключа: /home/pills/.ssh/id_ed25519
debug1: Попытка ключа: /home/pills/.ssh/id_ed25519_sk
debug1: Попытка ключа: /home/pills/.ssh/id_xmss
debug1: Попытка ключа: /home/pills/.ssh/id_dsa
debug1: Больше нет методов аутентификации для попытки.
[email protected]: Доступ запрещён (publickey).
Ответ или решение
Ответ на проблему "Permission denied (publickey)" в Debian
Ошибка "Permission denied (publickey)" при подключении к серверу SSH на Debian может возникать по нескольким причинам. Рассмотрим последовательный процесс устранения этой проблемы.
1. Проверка SSH ключей
Убедитесь, что вы используете правильный закрытый ключ для аутентификации.
- Проверьте, что файл
id_rsa
находится в каталоге~/.ssh
и имеет правильные разрешения. Для этого выполните следующие команды:
ls -la ~/.ssh
Файл id_rsa
должен иметь разрешения 600
, а каталог ~/.ssh
— 700
. Если разрешения неправильные, установите их с помощью:
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh
2. Проверьте наличие публичного ключа на сервере
На сервере, к которому вы пытаетесь подключиться, убедитесь, что ваш публичный ключ находится в файле ~/.ssh/authorized_keys
для вашего пользователя. Публичный ключ — это содержимое файла ~/.ssh/id_rsa.pub
.
Чтобы добавить ключ, выполните следующую команду на вашем локальном компьютере:
cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'
Замените [email protected]
на адрес вашего сервера. Убедитесь, что на сервере у вас есть доступ через другой метод (например, парольная аутентификация), если ключ еще не установлен.
3. Проверка конфигурации SSH
Убедитесь, что конфигурация SSH-сервера настроена правильно. Проверьте файл /etc/ssh/sshd_config
на сервере и убедитесь, что следующие параметры установлены:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
После внесения изменений в конфигурационный файл не забудьте перезапустить SSH-сервер:
sudo systemctl restart ssh
4. Проверка SSH-агента
Если вы используете SSH-агент для хранения ключей, выполните команду, чтобы убедиться, что ваш ключ добавлен в агент:
ssh-add -l
Если ваш ключ не отображается, добавьте его:
ssh-add ~/.ssh/id_rsa
5. Диагностика с помощью флага -v
Если ошибка все еще появляется, используйте команду SSH с включенным отладочным выводом, чтобы получить дополнительную информацию:
ssh -vvv [email protected]
Эта команда предоставит больше информации о том, что происходит во время попытки подключения и может помочь в диагностике проблемы.
6. Убедитесь в корректности пользовательских данных
Проверьте правильность имени пользователя и адреса сервера. Ошибки в этом могут привести к ошибке аутентификации.
Заключение
Следуя этим шагам, вы сможете устранить ошибку "Permission denied (publickey)" и успешно подключиться к вашему серверу через SSH. Если проблема не устраняется, проверьте логи SSH на сервере (обычно находится в /var/log/auth.log
), чтобы получить дополнительную информацию о причинах неудачной аутентификации.