Лень берет верх или «Как добавить SSH ключи к существующему дроплету?»
Сегодня, уже не таким ранним как это, но всеже утром, понадобилось мне добавить SSH ключи к одному из существующих DigitalOcean дроплетов. Все дело в том, что вчера вечером мне пришлось несколько раз подряд заходить и снова выходить на сервер, а так как пароли у нас – как у больших, их ввод мне изрядно надоел, по этому я решил добавить SSH ключ. На сколько я понял, если Вы уже добавили ключ в панели управления, то к созданному дроплету можно будет подключиться с его помощью. Но что делать, если дроплет уже создан? Никаких проблем, это довольно просто и делается за пару минут.
1. Генерируем новую пару ключей (публичный и приватный) на вашей машине
ssh-keygen -t rsa -C "your@mail.com"После ввода команды нужно будет ответить на несколько вопросов
Enter file in which to save the key (/user/.ssh/id_rsa):
Вы можете нажать Enter и оставить дефолтный путь. Следующим будет вопрос о проверочной фразе
Enter passphrase (empty for no passphrase):
Ее потребуется вводить при использовании ключа во время подключения. Вы также можете отказаться от ее использования, просто нажав Enter.
Пример:

2. Копируем публичный файл id_rsa.pub в файл authorized_keys на сервере
cat ~/.ssh/id_rsa.pub | ssh root@server-ip-address "cat >> ~/.ssh/authorized_keys"По запросу введем пароль пользователя root.
Теперь подключиться к серверу стало на порядок проще
ssh root@server-ip-addressЧтобы явно указать, какой ключ следует использовать при подключении можно воспользоваться флагом -i
ssh -i /user/.ssh/id_rsa root@server-ip-addressБонусы:
1. SSH ключ мы сгенерировали, научились авторизовываться с его помощью. Чего не хватает? Правильно, теперь нужно отключить возможность входа на сервер с помощью root пароля. Для этого нужно в файле /etc/ssh/sshd_config изменить значение всего одного параметра
PermitRootLogin without-password
Теперь перезапускаем sshd процесс
ps auxw | grep ssh
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 915 0.0 0.1 43748 1043 ? Ss Sep3 0:32 /usr/sbin/sshd -D
kill -HUP 915
Все, теперь при попытки подключения к серверу без ssh ключей, Вы будете автоматически выдворены без предложения ввести пароль. P.S. Если Вы решите вновь разрешить вход по паролю, измените значение PermitRootLogin на yes.
2. Если Вы столь же ленивы, как я, Вы можете укоротить команду логина по SSH подредактировав config файл в /user/.ssh/
Host ssh-alias
HostName server-ip-address
User root
IdentityFile "~/.ssh/id_rsa"
Теперь, заходим на сервер с помощью команды
ssh ssh-alias