SSH авторизация файлами ключей

Автор Tesla, 08 февраля 2015, 19:02:14

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

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

Tesla

Добрый вечер уважаемые!

Помогите пожалуйста разобраться с авторизацией файлами ключей через SSH.

/etc/ssh/sshd_config:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      ~/.ssh/id_rsa.pub


Есть пользователь root и newuser1
У пользователя root есть директория /root/.ssh/
У пользователя newuser1 есть директория /home/newuser1/.ssh/

На компьютере которого должен подключаться я создал пару ключей командой ssh-keygen -t rsa (с рута в каталоге /root/.ssh/) приватный оставил, публичный перекинул в /home/newuser1/.ssh/ (на сервере к которому подключаюсь) (владелец файла newuser1), при попытке подключится как пользователь newuser1 запрашивает пароль. Если ключи кину в /root/.ssh/ и подключится как пользователь root, то заходит без пароля. И так на двох разный серверах

ogost

во-первых с паролем или без, нужно запретить логин рута по ssh.
во-вторых, ssh-keygen -t rsa исполняется на той машине, к которой мы хотим подключаться без пароля.
в третьих, при выполнении ssh-keygen запрашивается passphrase, который нужно оставить пустым.
в четвертых, публичный ключ передается на тот комп, с которого мы хотим подключаться к удаленной машине командой ssh-copy-id. копирование конечно тоже сработает, но всё же лучше ssh-copy-id.

oermolaev

Цитата: ogost от 08 февраля 2015, 19:48:50
во-первых с паролем или без, нужно запретить логин рута по ssh.
это вопрос спорный
Цитироватьво-вторых, ssh-keygen -t rsa исполняется на той машине, к которой мы хотим подключаться без пароля.
я всегда считал что наоборот
Цитироватьв третьих, при выполнении ssh-keygen запрашивается passphrase, который нужно оставить пустым.
почему так категорично? очень полезно задать пароль, если только не планируется использовать ssh подключение в автоматически исполняемых скриптах
Цитироватьв четвертых, публичный ключ передается на тот комп, с которого мы хотим подключаться к удаленной машине командой ssh-copy-id. копирование конечно тоже сработает, но всё же лучше ssh-copy-id.
Публичный ключ потому и называется публичным что может быть известен всей публике. Значит любой кто имеет такой ключ сможет подключиться к серверу без пароля?

Tesla

"во-вторых, ssh-keygen -t rsa исполняется на той машине, к которой мы хотим подключаться без пароля." я тоже читал что должен создаваться на стороне клиента. По вашей рекомендации создал ключ на сервере, все равно не мог зайти.

"в третьих, при выполнении ssh-keygen запрашивается passphrase, который нужно оставить пустым." оставил пустым (два раза нажал ентер)

oermolaev

Tesla, пароль защищает секретный ключ в случае кражи, поэтому полезно использовать пароль, если только нет серьёзных оснований от него отказаться.

ogost

Цитата: ogost от 08 февраля 2015, 19:48:50во-вторых, ssh-keygen -t rsa исполняется на той машине, к которой мы хотим подключаться без пароля.
упс, перепутал. oermolaev, Tesla, вы правы, всё наоборот.
oermolaev, root на ssh - серьезная проблема, если сервер с белым IP.

Tesla

Тогда все выполнил так как Вы и написали. Но почему-то не могу зайти на пользователя, только на рута. Можете подсказать что это может быть?

ihammers

Создавали ключ от пользователя, которым пытаетесь зайти или от рута?
Должны были создать от пользователя на машине с которой хотите заходить, потом перебросить ключ и проверить заходит ли с ключом.
Debian GNU/Linux Stretch, kernel 4.9.0-5-amd64,
LXQt/KDE/OpenBox AMD Phenon X4 / 16Gb RAM / ATI HD7750 Silent
_______________________________
Debian GNU/Linux Stretch, kernel 4.9.0-5-amd64, LXQt/KDE/OpenBox
Acer Aspire One 722 AMD C60 / 4Gb RAM / ATI HD6290

Tesla

Создавай от рута на машине клиенте (с той которой пытаюсь зайти), перекинул id_rsa.pub в папку /home/newuser1/.ssh/ (перекинул на машину на которую пытаюсь зайти (сервер)) , потом от рута с машины клиента пытаюсь зайти в машину сервер под логином newuser1

endru

#9
всегда делаю так:
Открыть содержимое (спойлер)
1. Генерируем ключ
ssh-keygen -t rsa
2. Копируем ключ на сервер:
ssh-copy-id username@ip-or-hostname
3. Проверяем вход на сервер:
ssh username@ip-or-hostname
[свернуть]

ваш случай: комментируем строчку  ( не уверен что она правильно отрабатывает... )
Цитата: Tesla от 08 февраля 2015, 19:02:14AuthorizedKeysFile      ~/.ssh/id_rsa.pub
перезапускаем ssh:
/etc/init.d/ssh restart
переименовываем на сервере файл .ssh/id_rsa.pub в .ssh/authorized_keys
выполняем вход на удаленный сервер.

UPD.
если на сервере указать AuthorizedKeysFile      ~/.ssh/id_rsa.pub удаленный вход действительно будет работать только от root пользователя.
правильная строка AuthorizedKeysFile      %h/.ssh/id_rsa.pub

Tesla

Большое Вам спасибо за "%h", работает! Но почему не работает с тильдой?