«В разрешении отказано (открытый ключ)» с «key_load_public: Нет такого файла или каталога» при попытке SSH

Я продолжаю получать следующую ошибку при запуске ssh -v -i privatekey user@server.org.

OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to server.org [XXX.XXX.XXX.XXX] port 22.
debug1: Connection established.
debug1: identity file privatekey type 1
debug1: key_load_public: No such file or directory
debug1: identity file privatekey-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to server.org:22 as 'user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none
debug1: kex: client->server chacha20-poly1305@openssh.com <implicit> none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:ig8ZTpASPM0W/drPBHPzcUIr+NtqzOKvVAvihnbaNuc
debug1: Host 'server.org' is known and matches the RSA host key.
debug1: Found key in /Users/XXX/.ssh/known_hosts:3
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: ysm
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: /Users/XXX/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Я не понимаю, что случилось. Я правильно скопировал свой открытый ключ и отредактировал разрешения для файла закрытого ключа, чтобы обеспечить его безопасность.

4
задан 28 December 2016 в 06:44
2 ответа

Ошибка "Permission denied" означает, что сервер отказал вам в соединении.

  1. Проверьте журналы на SSH.
  2. Как вы передали публичный ключ на сервер? Всегда используйте ssh-copy-id для проверки разрешений. Пользователи домашней директории, директории .ssh и файла авторизованных ключей на стороне сервера имеют строгие требования к разрешениям. (см. man sshd о файле authorized_keys).
  3. Проверьте конфигурационный файл сервера /etc/ssh/sshd_config, возможно, серверу разрешен вход только определенным пользователям или группам.
4
ответ дан 3 December 2019 в 03:28

В продолжение ответа Slipeer, вот что нужно добавить в /etc/ssh/sshd_config в деталях.

В моем случае я попытался клонировать проект gitlab, и решение должно работать для любой службы git. Ошибка была

#15 0.589 debug1: identity file /root/.ssh/id_rsa type -1, 
#15 0.589 debug1: key_load_public: No such file or directory

Она исчезла после использования

echo "Host *\n  User git\n  HostName gitlab.com\n  AddKeysToAgent yes\n  IdentityFile /root/.ssh/id_rsa" >> /etc/ssh/ssh_config

Это также то, что запрашивается в вашем блоке сообщений:

debug1: Reading configuration data /etc/ssh/ssh_config
...
debug1: key_load_public: No such file or directory

Решение доказывает, что ssh должен проверить, что сервер является известным хостом. Если вы не назначили необходимый известный хост, сервер gitlab не является доверенным, что означает невозможно найти key_load_public. Да, сообщение об ошибке сбивает с толку.

Конечно, вы также можете вручную заполнить этот ssh_config без команды echo.

0
ответ дан 28 April 2021 в 16:11

Теги

Похожие вопросы