Автоматическая SSH-авторизация по ключу

Допустим, Вам необходимо настроить беспарольный вход по SSH, SCP или SFTP на удаленный сервер remote.org.ua под пользователем user. Если имя Вашего локального пользователя совпадает с удаленным, то user@ везде можно опустить.
По умолчанию в корневой директории пользователя находится директория .ssh, если по какой то причине её нет, то создаём её командой

$ mkdir ~/.ssh

1) Cоздаем открытый и закрытый ключ нашей локальной системы:

$ ssh-keygen -t rsa -q -N '' -f ~/.ssh/id_rsa

Подробнее о ключах можете посмотреть с помощью команды:

$ ssh-keygen --help


2) Если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, чтобы она авторизовывала SSH по открытому ключу:

$ ssh-copy-id -i ~/.ssh/id_rsa user@remote.org.ua

переходим к шагу 4

3) Если ssh-copy-id нет, то можно сделать это вручную.

Вот последовательность действий:

3.1) копируем открытый ключ на удаленную систему

$ scp ~/.ssh/id_rsa.pub  user@remote.org.ua:~ 

3.2) Авторизуемся на удаленном сервере:

$ ssh user@remoute.org.ua

3.3) Заносим открытый ключ нашей локальный системы в авторизованные ключи удаленной системы, устанавливаем правильные права и "убираем за собой мусор":

remote$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh) # создаем директорию и даём права
remote$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys        # добавляем открытый ключ
remote$ chmod 600 ~/.ssh/authorized_keys                  # делаем правильные права 
remote$ rm ~/id_rsa.pub                                   # удаляем не нужное

4) Проверяем, что все работает, запускаем на локальном компьютере:

$ ssh user@remoute.org.ua

Рассмотрим пример автоматического подключения из Windows, используя утилиту Putty и PuTTYgen

Для начала скачаем с официального сайта обе утилиты отсюда.

Теперь утилитой PuTTYgen сгенерируем публичный и приватный ключ. Открываем утилиту и нажимаем Generate

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

По окончании процесса генерации, утилита предоставит Вам сгенерированный приватный и публичный ключ. Публичный, который обведен красным прямоугольником, нужно занести в файл authorized_keys, который находится в папке .ssh корне Вашего аккаунта на сервере, а приватный ключ сохраняем себе на компьютер. Для этого нажимаем на кнопку Save private key. Учтите, что приватный ключ нельзя ни показывать, ни передавать, иначе смысл безопасного подключения теряется.

Сейчас скопируем публичный ключ в файл .ssh/authorized_keys находящийся на Вашем аккаунте. Для этого открываем утилиту Putty

Вводим логин пользователя (он совпадает с именем от личного кабинета):

После ввода пароля видим, что нас вежливо приветствует система:

После этого полностью копируем публичный ключ из области, выделенной красным цветом (на слайде выше), в консоли пишем cat >> .ssh/authorized_keys << EOF, нажимаем Enter, затем вставляем публичный ключ, еще раз нажимаем Enter, пишем EOF и еще раз жмем Enter

Отлично, ключ добавлен, теперь проверим нашу беспарольную авторизацию. Для этого открываем еще раз Putty, переходим во вкладку Auth затем нажимаем на Browse, выбираем наш приватный ключ, который мы сгенерировали и сохранили себе:

Теперь перемещаемся во вкладку Session и, также как ранее, вводим адрес нашего сервера, в нашем случае - это matrix.beget.com затем нажимаем Open

Теперь вводим логин пользователя, который совпадает с логином от входа в личный кабинет, в нашем случае - denia0d3 дальше жмем Enter

После этого мы попали на сервер, заметьте, БЕЗ ввода пароля, что достаточно удобно при частых подключениях:





Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".