[Решено] Разрешение отклонено (открытый ключ) Ошибка SSH в Linux
В этом кратком руководстве показано, как исправить ошибку ssh «sign_and_send_pubkey: ошибка подписи: агент отказался от операции. Разрешение отклонено (открытый ключ)» в Linux.
В этом кратком руководстве показано, как исправить ошибку ssh «sign_and_send_pubkey: ошибка подписи: агент отказался от операции. Разрешение отклонено (открытый ключ)» в Linux.
Если вы пытаетесь подключиться к удаленному серверу через SSH, вы можете столкнуться с ошибкой отказа в доступе. Эта ошибка может произойти по нескольким причинам.
Аутентификация на основе пароля отключена в удаленной системе
Ваш открытый ключ не добавляется на сервер, который допускает только авторизацию на основе ключа.
-
Неправильные права доступа к файлам для ключей SSH.
И решение этой проблемы зависит от точной причины ошибки.
В моем случае открытый и закрытый ключи хранились на рабочем столе Ubuntu 16.04. После выпуска Ubuntu 18.04 я решил перейти на более новую версию. Я предпочитаю новую установку обновлениям дистрибутива.
Итак, я сделал резервную копию основных папок моего домашнего каталога, включая папку .ssh с открытым и закрытым ключами на внешнем диске.
После установки я включил SSH в Ubuntu 18.04 и восстановил все, включая ключи SSH.
Теперь, когда я попытался подключиться к удаленному серверу с помощью ssh, я подумал, что это сработает сразу, потому что у меня были одни и те же открытый и закрытый ключи.
Но это не сработало. SSH выдал мне эту ошибку:
sign_and_send_pubkey: signing failed: agent refused operation
[email : Permission denied (publickey).
Если вы попали в аналогичную ситуацию, когда вы скопировали ключи SSH из другого источника, позвольте мне показать вам, как исправить эту ошибку SSH.
Исправьте права доступа к файлам в папке ~/.ssh и ее содержимом.
Как правило, вы можете установить следующие разрешения для каталога ssh и его файлов (закрытые ключи, открытые ключи, известные_хосты, файл конфигурации ssh и т. д.)
- .ssh directory
700 ((drwx------)
- public keys
-
644 (-рв-р--р--)
- private keys
600 (-rw-------)
- authorized_keys
600 (-rw-------)
- known_hosts
600 (-rw-------)
- config
600 (-rw-------)
Возможно, у вас нет всех файлов, но у вас должны быть здесь открытый и закрытый ключи.
Теперь давайте посмотрим, как изменить права доступа к файлам для ключей ssh и других файлов.
Исправление ошибки «Отказано в доступе (открытый ключ)»
Итак, проблема здесь в правах доступа к файлам. Видите ли, когда я копировал файлы, USB-накопитель был в формате Microsoft FAT. Этот файл не поддерживает разрешения файлов UNIX/Linux.
И, следовательно, права доступа к скопированным ключам ssh были изменены на 777.
Для SSH права доступа к файлам слишком открыты. Просто не разрешено иметь права 777 для открытых или закрытых ключей. И именно поэтому здесь SSH отказал в соединении.
ls -l .ssh
-rwxrwxrwx 1 abhishek abhishek 1766 Nov 12 2017 id_rsa
-rwxrwxrwx 1 abhishek abhishek 398 Nov 12 2017 id_rsa.pub
-rwxrwxrwx 1 abhishek abhishek 4214 Sep 21 21:39 known_hosts
Закрытый ключ должен иметь разрешения на чтение и запись только для пользователя и никаких других разрешений для группы и других лиц.
Вы должны изменить разрешение с помощью команды chmod:
chmod 600 ~/.ssh/id_rsa
Точно так же открытый ключ не должен иметь разрешений на запись и выполнение для группы и других.
chmod 644 ~/.ssh/id_rsa.pub
Теперь, когда вы установили правильные разрешения, вы можете снова подключиться к ssh. В это время он запросит ваш пароль администратора, чтобы разблокировать ключи. Введите пароль администратора, и все готово.
Это также преподало мне урок о том, что копирование файлов — плохая идея, и необходимо сделать правильную резервную копию, иначе все файлы будут иметь опасные разрешения 777. Мне пришлось рекурсивно изменить права доступа к файлам во всем домашнем каталоге, и поверьте мне, это было не очень приятно.
Как я уже говорил ранее, причины этой ошибки могут быть разные. Что касается проблемы, связанной с разрешением на открытие файла, это исправление должно помочь вам исправить ошибку «Отказано в разрешении (открытый ключ)» с помощью SSH. Если вам интересно, вы можете прочитать больше об основах SSH.
Дайте мне знать в разделе комментариев, помогло ли вам исправление или нет. Также выскажите свое мнение по поводу копирования ключей ssh на другие компьютеры.