Я установил sshd на сервере Linux и смог войти через ключи, сгенерированные с помощью ssh-keygen
. Однако я сделал следующее наблюдение: когда я генерирую пару ключей на клиенте и копирую открытый ключ на сервер, все работает нормально. Но когда я генерирую пару ключей на сервере и копирую закрытый ключ клиенту, я не могу войти в систему. Кто-нибудь может объяснить мне, если и почему ключи должны быть созданы на клиенте?
2 ответа
Ключи не нужно создавать на клиенте. Ключи даже не нужно создавать с одной и той же ОС. Если вы используете правильные инструменты, вы можете преобразовать ключ, сгенерированный из генератора ключей Putty, в ключ формата OpenSSH.
Ваша проблема, скорее всего, связана с тем, что OpenSSH и некоторые другие клиенты SSH очень требовательны к разрешениям закрытых ключей.
В зависимости от того, как вы передали закрытый ключ клиенту, права доступа к ключу могут отличаться от сервера и могут быть неправильными. Закрытый ключ всегда должен быть 0600
или -rw-------
.
Вы увидите предупреждение об этом на клиенте, если вы передадите опцию -v
в ssh при подключении. Он будет жаловаться на разрешения на закрытый ключ или, возможно, на каталог, содержащий закрытый ключ.
Каждый хост - и сервер, и клиент имеют два ключа - открытый и закрытый. Если вы хотите взаимного доверия, вам нужно сгенерировать ключи на обоих и передать один ключ от пары к другой стороне (от обоих хостов).
Пожалуйста, прочитайте следующее руководство.