От новичка до профессионала: генерация SSH-ключей на Windows
Подробно рассказываем, что такое CDN и как она используется. Разбираемся, нужна ли она вашему бизнесу и как правильно выбрать партнера, чтобы получить удовольствие и повышение прибыли в процессе работы.

Заголовок
SSH-ключи используют для удаленного доступа к устройствам или серверам, чтобы не вводить пароли и обезопасить ресурсы от злоумышленников. В статье расскажем, что такое SSH-ключи, как их использовать и какие утилиты нужны для создания.
Что такое SSH-ключи
SSH (Secure Shell) — криптографический сетевой протокол, способ безопасной связи между двумя компьютерами. Представьте себе секретный туннель, по которому можно передавать данные так, чтобы никто посторонний не мог их увидеть или изменить. Этот туннель и есть SSH.
SSH-ключи (Secure Shell Key) — пара специальных цифровых кодов, которые используются вместо паролей. Пароли нужно запоминать и вводить каждый раз при входе, а SSH-ключи хранятся в файле на компьютере. Их не надо запоминать и вводить, а сами ключи длинные и могут дополнительно защищаться паролями, что снижает вероятность взлома.
Протокол SSH широко применяют там, где важна безопасность и конфиденциальность данных. Вот несколько примеров:
Удаленное управление. Программисты и сисадмины используют SSH, чтобы удаленно управлять веб-серверами, базами данных или другими компьютерами.
Передача файлов. Через SSH удобно отправлять важные документы и файлы на сервер, так как их никто не перехватит.
Создание защищенных каналов. Можно настроить безопасный канал для работы с веб-сайтами или корпоративными ресурсами, минуя нежелательные блокировки и фильтры. Например, SSH поддерживает проброс портов, который позволяет безопасно получать доступ к внутренним службам.
Автоматизация задач. Допустим, у вас есть программа-робот, которой нужно автоматически соединяться с другим сервером и что-то делать, например, создавать бэкапы. Для этого программа использует SSH-ключ.

Принцип работы SSH-ключей
SSH-ключ — это пара специальных цифровых кодов:
Приватный, или закрытый ключ хранится только у вас. Его нельзя показывать никому, иначе ключ перестанет быть безопасным.
Публичный, или открытый ключ — часть, которую вы предоставляете серверу или устройству, к которому надо получить доступ. Без приватного ключа публичный бесполезен.
Как это работает:
Вы создаете пару ключей. Приватный оставляете себе, а публичный отправляете на сервер.
Когда вы пытаетесь войти, сервер проверяет, есть ли в файле .ssh/authorized_keys открытый ключ. Если есть, сервер генерирует случайное число, шифрует его открытым ключом и отправляет вам.
На стороне пользователя сообщение от сервера расшифровывается закрытым ключом, результат направляется на сервер.
Сервер проверяет, совпадает ли результат с числом, которое он зашифровал. Если все совпало, аутентификация будет пройдена.

Подготовка к созданию SSH-ключей на Windows
Установка OpenSSH-клиента
OpenSSH-клиент — встроенный инструмент Windows, который нужен для безопасного подключения к удаленным серверам и устройствам через SSH. Начиная с Windows 10 версии 1809 и выше, клиент предустановлен, но зачастую требует активации.
Как проверить, есть ли на устройстве OpenSSH-клиент. Есть два способа: через PowerShell или графический интерфейс Windows. Расскажем о каждом из методов.
1. Через PowerShell. Откройте его от имени администратора и выполните команды:
Если вы видите строку с состоянием State: Installed, значит клиент установлен. Если отображено State: Not Present, OpenSSH не установлен.

2. Через интерфейс. Откройте Параметры → Приложения → Дополнительные компоненты. Просмотрите список установленных компонентов. Если в списке есть OpenSSH Client, значит OpenSSH загружен.
Если клиента нет, вы можете установить его одним из следующих способов:
Через интерфейс. Перейдите в Параметры → Приложения → Дополнительные компоненты → Добавить компонент. Найдите в списке OpenSSH Client и нажмите Установить.
Через PowerShell. Запустите PowerShell от имени администратора и выполните команду:

Альтернатива OpenSSH: установка PuTTY
PuTTY — это бесплатный и популярный SSH-клиент для Windows, который позволяет безопасно подключаться к удаленным серверам и управлять ими. Ниже — инструкция по установке и первоначальной настройке PuTTY.
1. Перейдите на сайт PuTTY и выберите версию для вашей операционной системы.
2. Нажмите на ссылку для скачивания. Браузер загрузит файл с расширением .msi.
3. Откройте скачанный файл и следуйте инструкции по установке.
4. На экране выбора компонентов убедитесь, что отмечены все нужные утилиты:
PuTTYgen — генератор SSH-ключей,
PSCP — утилита для передачи файлов по SSH,
Plink — командная строка для автоматизации SSH-подключений,
Pageant — SSH-агент для хранения ключей в памяти.
5. После установки найдите PuTTY в меню Пуск или на рабочем столе. В поле Host Name или IP address введите IP-адрес или доменное имя удаленного сервера.
6. Убедитесь, что выбран тип подключения SSH и порт 22 — это стандартный порт для SSH.
7. Сохраните сессию и дайте ей имя, например, «Мой сервер». Это пригодится, чтобы в дальнейшем быстрее подключаться.
8. Нажмите Open, чтобы подключиться к серверу.
9. При первом подключении система спросит подтверждение подлинности сервера. Для этого нажмите Да.
10. Введите логин и пароль для входа на сервер.

Генерация SSH-ключей с OpenSSH
Рассказываем, как создать приватный и публичный SSH-ключи на Windows, а также как их использовать.
Как генерировать SSH-ключи с OpenSSH:
1. Откройте командную строку (cmd.exe) или PowerShell.
2. Введите команду:
3. Согласитесь с предложением сохранить ключ в стандартной директории, обычно это C:/Users/YourUsername/.ssh/. Если нужен ключ с другим именем, нужно явно прописать путь:

4. Задайте фразу-пароль (passphrase). Это опционально — если хотите пропустить этап, просто нажмите Enter. Рекомендуем все же установить passphrase, чтобы дополнительно защитить ключи.
5. Создадутся два ключа: приватный (id_ed25519) и публичный (id_ed25519.pub). Они сохранятся в C:/Users/YourUsername/.ssh/.
Чтобы использовать публичный ключ, его нужно разместить на удаленном сервере в файле ~/.ssh/authorized_keys. Сделать это можно двумя способами:
1. Скопировать ключ вручную через редактор. В PowerShell выполните команду:
Далее скопируйте все содержимое файла, которое начинается с ssh-ed25519...
2. Если уже есть доступ к нужному серверу, используйте команду:

Генерация SSH-ключей с PuTTY
Для создания ключей нужна утилита PuTTYgen — она устанавливается вместе с основным пакетом PuTTY. При установке проследите, чтобы напротив нужных приложений стояли галочки, допустим, рядом с PuTTYgen, Plink или Pageant.
Как сгенерировать SSH-ключи в PuTTYgen:
Запустите приложение через меню Пуск или файл puttygen.exe.
Выберите тип алгоритма шифрования. Рекомендуем RSA, это широко распространенный и поддерживаемый алгоритм. Альтернатива — современный и быстрый алгоритм EdDSA, правда, он поддерживается не всеми серверами.
Установите длину ключа. Для RSA задайте значение Number of bits не менее 2 048 бит, для повышенной безопасности — 4 096 бит. Для EdDSA советуем выбрать Ed25519.
Нажмите Generate и произвольно перемещайте мышь в выделенной области. Так программа собирает случайные данные, чтобы сформировать надежный ключ.
В поле Key comment введите понятное название или комментарий, который поможет вам идентифицировать ключ. Можно указать, например, название проекта или сервера, к которому нужен доступ.
Задайте сильную и уникальную фразу-пароль в поле Key passphrase. Это опционально. Пароль усилит безопасность, но его нужно будет вводить при каждом использовании ключа.
Сохраните приватный ключ — нажмите Save private key. Программа предложит выбрать формат файла: советуем PPK, это собственный формат PuTTY, который подходит для использования в приложении. Другие форматы выбирайте при особой необходимости — допустим, если нужен доступ к GitLab, который требует ключи в формате OpenSSH. Никому не передавайте приватный ключ и сохраните его в надежном месте, например в C:\Users\YourUsername\.ssh\ или папке, путь к которой вы прописали при установке.
Нажмите Save public key, чтобы отдельно сохранить публичный ключ. Назначьте понятное имя файла и сохраните его рядом с приватным ключом.
Как использовать ключи с PuTTY:
Откройте PuTTYgen, выделите и скопируйте публичный ключ из Public key for pasting into OpenSSH authorized_keys file.
Подключитесь к серверу через PuTTY.
На сервере откройте файл ~/.ssh/authorized_keys, введите туда скопированный публичный ключ. Если файла нет, создайте его — введите в терминале на сервере:
4. Установите права на использование ключа только для себя:
Советы по безопасности
Чтобы защитить ваши SSH-ключи, рекомендуем соблюдать несколько советов:
Устанавливайте passphrase на приватный ключ. Даже если кто-то получит к нему доступ, без пароля файлом ключа не воспользуются.
Сохраняйте права доступа к ключу только у себя (команда chmod 600).
Храните приватные ключи на своем компьютере.
Используйте разные ключи для разных целей. Например, один для GitHub, второй для рабочих серверов, третий — для личных. Если будет скомпрометирован один ключ, остальные останутся в безопасности.
Регулярно делайте бэкапы ключей.
Время от времени проверяйте файл authorized_keys на сервере, удаляйте неиспользуемые ключи.
Что касается настроек не ключей, а SSH-сервера, по возможности не используйте стандартный порт 22. Он относится к well-known портам (порты с 0 до 1023), которые зарезервированы для стандартных системных служб и популярных сетевых протоколов. Используйте любой незанятый номер порта, начинающийся с 1024, к примеру, 2233.