1 заметка с тегом

AuthorizedKeysFile

ssh-подключение к серверу по ключу

При подключении по ssh к удаленному серверу используется авторизация по паролю.
Что-то типа такого:

Данный вид авторизации является наименнее безопасным, т. к. многие сервера взламываются ботами, которые простым перебором подбирают нужный пароль.
Более прогрессивным вариантом будет настроить авторизацию по ssh-ключу.
Для начала создадим приватный и публичный ключи у себя на локальной машине (с которой мы планируем «ходить» к серверу).

Как создавать ключи можно прочитать в начале статьи здесь. Я кратко опишу:
В консоли линукса введите:

ssh-keygen -t rsa -b 4096

В данном случае будет лучше, если задать контрольную фразу. Это будет дополнительным шагом безопасности подключения.
Т. е. у нас получится два ключа:
приватный id_my_project и публичный id_my_project.pub. Приватный храним себя в родной директории ~/.ssh/ и никуда более не сохраняем.
Публичный же нам необходимо скопировать на сервер, к которому будем коннектиться.

cd ~/.ssh/
cat id_my_project.pub | ssh root@192.168.0.102 "cat >> /home/username/.ssh/authorized_keys"

У вас запросят пароль для доступа к серверу.

Вместо 192.168.0.102 укажите реальный IP сервера, к которому будем делать коннект.
Вместо root@192.168.0.102 можно указывать просто IP сервера, если имя юзера на локальнй машине совпадает с именем юзера на сервере.

Публичный ключ будет записан в файл authorized_keys.
Не забываем задать правильные права на доступ к файлу:

chmod 600 ~/.ssh/authorized_keys

Теперь необходимо настроить авторизацию в конфиге ssh на сервере:

nano /etc/ssh/sshd_config

Откроется целая простыня настроек, но особо стоит обратить на следующее:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     %h/.ssh/authorized_keys

Если закомментировано, то раскомментировать

Важно: изменение порта — не панацея, но поможет «обмануть» большое количество ботов, которые шерстят по стандартным портам. Главное не создать конфликт с другими службами на сервере.

Port 22

Важно: мы запрещаем авторизацию под рутом. Не надо руту ходить на сервер. Лучше создать отдельного пользователя и с помощью sudo давать расширенные права.

PermitRootLogin no

Важно: Запрещаем авторизацию по паролю, т. к. в ином случае, при отсутствии ключа на локальной машине пользователя, Сервер предложит авторизоваться по паролю. Мы же разрешаем только по ключу, тем более при авторизации запрашиваем контрольную фразу.

PasswordAuthentication no

Важно: Запрещаем авторизацию по пустому паролю

PermitEmptyPasswords no

Сохраним изменения.
Не забываем рестартануть службу:

service ssh restart

Теперь пробуйте выполнить подключение из, например, соседней вкладки терминала Линукса.
Удачи!