Авторизация ssh по открытому ключу

Автор Tinko, 21 октября 2019, 15:58:14

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Tinko

Здравствуйте, хочу использовать для авторизации пару приватных и публичных RSA ключей.

Сгенерировал через PuTTY пару ключей, добавил публичный ключ в файл /.ssh/authorized_keys. Ключ идёт одной строкой, пример:

ssh-rsa eKd4Ev9FG0gf rsa-key-user

Делал я это всё под юзером, с правами sudo. Добавил права 700 на /.ssh и 600 на /.ssh/authorized_keys. В /etc/ssh/sshd_config раскомментировал строку AuthorizedKeysFile. В итоге, при попытке авторизации по ключу, пишет: server refused our key. Пробовал и под юзером и под root авторизоваться, не получилось.

Что я сделал не так и как правильно нужно сделать?

alexxnight

На клиенте:
ssh-keygen -t rsa -b 4096

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

Скопировать публичный ключ на сервер:
ssh-copy-id -i ~/.ssh/id_rsa.pub [user name]@[host name or ip address]

На сервере в файле /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no \\ С этим параметром аккуратнее, вначале проверить, что устанавливается соединение по ключу!!!

Рестартовать сервис
service ssh restart

Tinko

Цитата: alexxnight от 21 октября 2019, 17:23:39На клиенте:
ssh-keygen -t rsa -b 4096

будет создано пара ключей, спрошен пароль в процессе создания ключа и путь к каталогу, где должны храниться ключи.
У меня клиент на Windows, потому и PuTTY используется


Tinko

Цитата: ogost от 21 октября 2019, 19:31:24
Делайте под юзером без судо
Какие действия тогда предпринять? Удалить сохранённый ключ, а потом заново записать под юзером?

endru

#5
1. Скачиваем с putty.org утилитку puttygen запускаем её и генерим ключ:
[attach=1,msg116469]
Затем сохраняем приватный ключ, в любом месте, которое считаете максимально защищенным, особенно если это касается публичных серверов в интернете.

2. Копируем публичный ключ, полностью как он есть (ПКМ - выделить всё, ПКМ - копировать).
[attach=2,msg116469]
Заходим по SSH на нужный сервер под нужным пользователем. Если нужный пользователь закрыт (например если это root) то авторизуемся под доступным, а в нужного переходим командой:
sudo su - user
и добавляем скопированный ключ в конец файла:
echo "ключ_из_буфера_обмена" >> .ssh/authorized_keys
Но, т.к. там куча спецсимволов, лучше добавить это в любом текстовом редакторе, например:
nano .ssh/authorized_keys
и на новой строке добавить содержимое ключа.

3. Подготовим настройки putty, прописываем пользователя (под которым нужно входить на сервер) и адрес сервера (например root@myhost), задаем нужное имя сессии, и сохраняем текущие настройки:
[attach=3,msg116469]

4. Переходим в putty в категорию: Connection -> SSH -> Auth
И указываем путь до файла с приватным ключем:
[attach=4,msg116469]
5. Возвращаемся в категорию Session и сохраняем текущие настройки.
[attach=5,msg116469]


Кликаем дважды по сохраненной сессии... Профит?!

Tinko

Эм, не совсем. От юзера, без использования sudo не получается открыть файл authorized_keys. Сгенерировал новую пару ключей. Всё равно пишет: server refused our key. Пробовал и от юзера, и от рута авторизоваться. Дело точно не в настройках прав на каталог /.ssh и файл authorized_keys?

endru

Цитата: Tinko от 22 октября 2019, 15:11:40Дело точно не в настройках прав на каталог /.ssh и файл authorized_keys?
все что лежит в /home/user должно принадлежать пользователю user, если это не так - меняй владельца командой chown

Tinko

Цитата: endru от 22 октября 2019, 16:48:43
все что лежит в /home/user должно принадлежать пользователю user, если это не так - меняй владельца командой chown

Минуточку. Но ведь я добавляю открытый ключ в файл, находящийся в каталоге /.ssh, а не в /home/user. Что в таком случае делать? Я понимаю что где-то ошибся, или не понял базовых принципов. Но есть желание решить вопрос. Могу логи показать, если какие-то нужны

endru

Цитата: Tinko от 22 октября 2019, 19:58:26Но ведь я добавляю открытый ключ в файл, находящийся в каталоге /.ssh
???
в каком еще /.ssh ?
все файлы должны находиться в /home/username/.ssh и принадлежать только владельцу username, если это не так - переделывай по новому. Не выходит - делай по новой, с нуля.

Tinko

Цитата: endru от 23 октября 2019, 03:34:58все файлы должны находиться в /home/username/.ssh и принадлежать только владельцу username
Теперь понял, сделал, всё работает. Спасибо