Генерация SSH ключей и их использование
SSH ключи являются очень удобным и надёжным способом идентификации и аутентификации при подключении к серверам. Ключ состоит из двух частей: открытого и закрытого ключа. Закрытый ключ необходимо держать в секрете. Открытый размещается на сервере.

Как это работает?
Вкратце: Для проверки ключа сервер отправляет клиенту произвольное сообщение. Клиент шифрует это сообщение своим приватным ключом и возвращает результат серверу. Сервер расшифровывает сообщение с помощью открытого ключа. И если в результате получается исходное сообщение, то значит ключи подходят и клиента можно авторизовать. Более подробно можно почитать на специализированных сайтах.
Генерация ключей в Windows

Для генерации ключей в Windows можно использовать утилиту PuTTY Key Generator (Puttygen) из PuTTY. Работать в ней очень просто. Единственное, что в ней нужно сделать — выбрать тип ключа (RSA) и его длину. И нажать кнопку «Generate».

Во время процесса генерации нам рекомендуют двигать мышью внутри окна, чтобы увеличить энтропию. По окончанию процесса увидим такое окно:

В самом верхнем поле мы видим наш публичный ключ. Его можем публиковать хоть на своей странице в соц.сетях. Это не опасно. Отсюда же его и удобно копировать для вставки на сервер. Но об этом позже.
Key fingerprint — отпечаток ключа. Короткая последовательность байт, которая идентифицирует наш публичный ключ.
Key comment — просто комментарий к ключу. Никак не используется и служит только для нашего удобства. Если ключей у вас много от разных серверов, то лучше их подписать.
Key passphrase — а вот сюда необходимо ввести пароль (и ниже повторить), которым мы защитим наш ключ в случае кражи.
После этого жмём кнопки «Save public key» и «Save private key». Впрочем, сохранять публичный ключ не имеет смысла, так как он продублирован в файле приватного ключа.

Генерация ключей в Linux
Тут всё просто. Вводим в консоли команду ssh-keygen и просто отвечаем на вопросы: куда сохранить ключи и вводим пароль.
user@serv:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/nightflash/.ssh/id_rsa): /home/user/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: b5:60:d8:ed:27:9f:7a:4d:9e:38:e4:bd:23:e0:ec:c0 user@serv The key's randomart image is: +---[RSA 2048]----+ | | | o . | | . + o | | . + . | | S + . | | . .+... | | Eo +o* . | | .o.* * | | .o. o.o | +-----------------+
В результате будут созданы два файла: /home/user/.ssh/id_rsa.pub и /home/user/.ssh/id_rsa, с публичным и приватным ключами соответственно.
Использование ключей
P.S. Здесь я рассматриваю случай подключения из Windows к Linux серверу.
Для интереса посмотрим содержимое файлов ключей созданных в PuTTY. Публичный ключ:
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20170813" AAAAB3NzaC1yc2EAAAABJQAAAQEAidv/Xk0Sj+eHBg91AAX+ISn/RWEoZwFONsKI rgMwqkZmrqDEFCjbn0aUYSuZjKAOH/uMQHm3KQmtVG62xHePevg4/ZG4bEGeM6le UZLkCqdhhwat/JTEu9chQZktWF/Ok3IRHOPlZ8Se6Qg3lEBuijSk6VHSSBJeNY+6 tWAtB9h1vrh5PMJce2IEkXJtcFgXVUSvtxOtHpOUwdgNg5U69knrozJXTS6W7Dtb NFZlf8BYHNy6f/06/dks2r3QFC/f+a7yrj7AMs0HDm/8ZYOBwWS3tuLqyPC2Wx6f omx2yhIuXr1G+86N9+29Q+lMnAkbMSvCKDwH/9YJxlNKbGAZxw== ---- END SSH2 PUBLIC KEY ----
Этот ключ нам нужно поместить на сервер. Но в данном виде он для этого не годится. Есть два варианта: либо привести ключ к виду:
ssh-rsa XXXXX...........XXXXX комментарий
либо открыть приватный ключ в Puttygen и скопировать Public key оттуда. В том и другом случае ключ будет выглядеть как-то так:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAidv/Xk0Sj+eHBg91AAX+ISn/RWEoZwFONsKIrgMwqkZmrqDEFCjbn0aUYSuZjKAOH/uMQHm3KQmtVG62xHePevg4/ZG4bEGeM6leUZLkCqdhhwat/JTEu9chQZktWF/Ok3IRHOPlZ8Se6Qg3lEBuijSk6VHSSBJeNY+6tWAtB9h1vrh5PMJce2IEkXJtcFgXVUSvtxOtHpOUwdgNg5U69knrozJXTS6W7DtbNFZlf8BYHNy6f/06/dks2r3QFC/f+a7yrj7AMs0HDm/8ZYOBwWS3tuLqyPC2Wx6fomx2yhIuXr1G+86N9+29Q+lMnAkbMSvCKDwH/9YJxlNKbGAZxw== rsa-key-20170813
То есть из ключа удалены переносы строк, перед ним вставлена фраза «ssh-rsa», а после ключа — комментарий. Кстати, в Linux ключ сохраняется сразу в таком виде.
Если вы устанавливаете ключ на сервер вручную, то его необходимо поместить в файл /home/username/.ssh/authorized_keys . На самом сервере это можно сделать к примеру так:
cat id_rsa.pub >> /home/username/.ssh/authorized_keys
Если вы создаёте VDS-сервер, то обычно хостер предоставляет возможность сразу указать ключи. Рассмотрю DigitalOcean и Scaleway.
В панели DigitalOcean необходимо перейти в Settings (настройки), затем выбрать Security (безопасность) и нажать кнопку Add SSH key.

В поля вставляем наш публичный ключ и комментарий.
Готово. Теперь мы видим отпечаток ключа.

У Scaleway делается аналогично. Переходим в Credentials (полномочия?).

Вставляем ключ и нажимаем кнопку Use this SSH key.

Видим ключ:

Который после обновления страницы превращается в отпечаток:

После этого можно создавать VDS-сервер.
Теперь смотрим приватный ключ (часть файла):
PuTTY-User-Key-File-2: ssh-rsa Encryption: aes256-cbc Comment: rsa-key-20170813 Public-Lines: 6 AAAAB3NzaC1yc2EAAAABJQAAAQEAidv/Xk0Sj+eHBg91AAX+ISn/RWEoZwFONsKI rgMwqkZmrqDEFCjbn0aUYSuZjKAOH/uMQHm3KQmtVG62xHePevg4/ZG4bEGeM6le UZLkCqdhhwat/JTEu9chQZktWF/Ok3IRHOPlZ8Se6Qg3lEBuijSk6VHSSBJeNY+6 tWAtB9h1vrh5PMJce2IEkXJtcFgXVUSvtxOtHpOUwdgNg5U69knrozJXTS6W7Dtb NFZlf8BYHNy6f/06/dks2r3QFC/f+a7yrj7AMs0HDm/8ZYOBwWS3tuLqyPC2Wx6f omx2yhIuXr1G+86N9+29Q+lMnAkbMSvCKDwH/9YJxlNKbGAZxw== Private-Lines: 14 F8Q44u5El96ttrGZkwBB36NhgBohmQI+/8TkBaTCqqLjPGKTl21cSQkp4epdgRn8 9MGsrgktyKC2KqE8N+SWSBIpli7cPqTMlOSowT5gj6RSZs3kpZlgUan5cZG0DN3R ... gG7WibKiyC3gVraFn4XiyqurZ4uPGZ313flq7dPqE6cYwAqm3JiQXcq5SsklnN+F Private-MAC: 8d8b1d632d0923614c72d2220902e787d151c145

Абсолютно ничего интересного. К счастью, ничего нам с ним делать не нужно, нам нужен просто этот файл целиком. Открываем программу PuTTY authentication agent (Pageant), которая сразу же прячется в системный трей. Вытаскиваем её оттуда щелчком по значку. Видим такое пустое окно:

Жмём кнопку Add key, выбираем приватный ключ, вводим пароль от него. Всё, ключ загружен. Программу можно закрыть (она будет свёрнута в трей).

Пока Pageant висит в трее с загруженными ключами, у вас есть беспарольный доступ к серверу. Теперь просто как обычно подключаемся к серверу по SSH, используя PuTTY. Вводим логин… и всё) Пароль от нас уже не потребуют.
В следующей статье расскажу об одном из способов хранения SSH ключей.