Назад | Перейти на главную страницу

Что означает эта ошибка ssh?

Это мое последнее средство. Я уже несколько часов пытаюсь понять, в чем проблема.

Дело вот в чем: я скопировал свой закрытый ключ с машины №1 на машину №2. Машина №1 может подключиться через ssh к серверу с моим открытым ключом, но машина №2 выдает следующий результат при попытке подключения к серверу:

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa user@192.168.1.244 -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace

...


Permission denied (publickey).

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

У меня также было подозрение, что это связано с тем, как я скопировал его с машины №1 на машину №2. Копирую / вставляю текст с приватного ключа на флешку. Это может быть проблемой, однако, когда я продублировал этот метод в другом рабочем файле закрытого ключа и сделал сравнение оригинала с копией / вставкой, они идентичны.

Я боролся с этим. Если бы я мог просто получить немного больше информации о том, почему ему не нравится мой ключ, я мог бы исправить это, я уверен. У кого-нибудь есть идеи по этому поводу? Есть ли где-то метаданные, которые говорят ssh, что файл на самом деле является ключом RSA?

По моему опыту, две наиболее распространенные ошибки аутентификации на основе ключей:

  1. Неуместно широкие разрешения на $HOME/.ssh каталог
  2. Ошибка копирования открытого ключа в удаленную систему

Права доступа к файлам

OpenSSH многое делает, пытаясь защитить вас от самого себя. Наибольшее влияние на пользователя оказывает наложение жестких ограничений на то, кто имеет доступ к вашей локальной папке ssh. Вы действительно хотите, чтобы только вы и только вы имели доступ к каталогу. Ну, и любой, у кого uid = 0, но нет хорошего способа обойти это. Итак, что вам нужно сделать, это просто изменить свои разрешения: chmod -R go-rwx ~/.ssh Это удалит права чтения, записи и выполнения для любых файлов в каталоге .ssh у всех пользователей, кроме владельца, т.е. ты.

Проблемы с авторизованными ключами

Файл, содержащий ваш открытый ключ, обычно $HOME/.ssh/authorized_keys должен соответствовать очень конкретной форме, чтобы SSH понимал, как принимать закрытый ключ. Каждый ключ должен состоять как минимум из 2 полей

  1. Тип используемого ключа (RSA, DSA, RSA1 и т. Д.)
  2. Ключ

Каждый ключ вместе со всеми его параметрами и составными частями должен быть указан по одному в каждой строке этого файла. Поскольку ключи, как правило, очень длинные, они часто будут заключаться в две строки на вашем терминале. Иногда это может вызвать хаос при попытке скопировать / вставить, поскольку иногда один или несколько символов новой строки будут вставлены в любое место на экране вашего экрана. Устранение этой проблемы жестяная банка быть немного сложнее для новичка в оболочке.

Попробуйте бежать
wc -l ~/.ssh/authorized_keys
Это распечатает количество строк в файле. Сравните это число с количеством ключей, которое вы ожидаете в файле. Если вы будете принимать только этот ключ, вы также можете просто сделать копию файла открытого ключа, поскольку он имеет тот же формат, что и ваш файл авторизованных ключей. Что-то вроде
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
или, если у вас есть открытый ключ в той же системе, вы можете сделать
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys

Кроме того, просмотрите файл журнала на удаленном хосте и посмотрите, не появляются ли там какие-либо ошибки. Скорее всего, файлы будут либо /var/log/secure.log или /var/log/auth.

Сообщения отладки, которые вы даете, означают, что файл закрытого ключа читается с предположением, что на самом деле это файл открытого ключа / авторизованных хостов. Возможно, это не фатальная ошибка (я получаю такие сообщения даже при рабочих соединениях). Говорится что-нибудь о «Приношении» или «мы отправили»?

Хотя вам, вероятно, придется сгенерировать новую пару ключей для компьютера 2 для подключения к серверу. Часто в открытом ключе указываются имена пользователей и машин тех, кто их сгенерировал. Это должно быть очевидно в вашем файле authorized_keys на сервере.

Попробуйте сравнить файлы конфигурации ssh между двумя серверами.

т.е. что-то вроде cat / etc / sshd_config