Копирование ssh-ключей на сервер


Допустим, что вы создали новую виртуалку на каком-нибудь VDS и вам нужно её настроить. Логиниться туда-сюда каждый раз по паролю грустно и неправильно. Правильно — по ssh-ключу. Для этого всего лишь нужно скопировать свой публичный ключ на сервер и добавить его в файл ~/.ssh/authorized_keys. Но если просто создать каталог, создать в нём файл и скопировать в него нужные символы – ничего работать не будет. Система ругнётся на что-то там про права доступа к файлам и будет, в принципе, права.

Создавать каталог и задавать ему права? Есть способ лучше!

Начинаем в терминале локальной ОС:

$ scp ~/.ssh/id_rs.pub mysrv.net:
$ ssh mysrv.net

Таким образом мы скопировали публичный ключ на удалённую ОС и залогинились на неё (по паролю, в последний раз). Дальше работаем на удалённой ОС:

$ ssh-keygen

Этой командой мы запускаем генерацию новой пары ключей. Нужно указать имя файла с ключом (или просто нажать Enter и оставить дефолтное имя) и ввести пароль для ключа (или два раза нажать Enter). В результате система сама создаст каталог .ssh в нужном месте с нужными правами. А созданная пара ключей нам может пригодиться в будущем.

Теперь копируем публичный ключ в список авторизованных и удаляем ненужный файл:

$ cat ~/id_rsa.pub > ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub

Всё. Можно выйти с удалённой ОС (Ctrl+D) и попробовать войти снова. Уже при помощи ключа.