Как создать SSH-ключи в Windows 10 и 11
TL;DR
Генерация SSH-ключей в Windows 10/11 проста: можно использовать встроенный ssh-keygen в Командной строке/PowerShell/Windows Terminal, Windows Subsystem for Linux (WSL) или PuTTY (puttygen). Для каждого сервиса удобно создавать отдельный ключ и управлять ими через ssh-agent и файл конфигурации ~/.ssh/config. Всегда сохраняйте приватный ключ в безопасном месте, используйте сложную фразу-пароль и делайте резервные копии перед переносом на новый ПК.

Быстрые ссылки
- Вариант 1: Генерация ключей через командную строку
- Вариант 2: Генерация ключей в WSL (Windows Subsystem for Linux)
- Вариант 3: Генерация ключей с PuTTY
Краткое содержание
- В Windows 10 (с обновления апреля 2018) и в Windows 11 встроен клиент OpenSSH: команда ssh-keygen создаёт ключи.
- Альтернативные методы: генерировать в WSL (если вы предпочитаете Linux-окружение) или использовать PuTTY/puttygen для создания и экспорта PPK/OpenSSH-ключей.
- Для разных сервисов (GitHub, DigitalOcean, VPS и т. п.) удобно заводить разные ключи и настраивать ~/.ssh/config, чтобы не путаться.
Введение
Если вы подключаетесь к удалённому серверу, пушите в Git, работаете с облачными VPS или управляете Nextcloud/собственным сайтом — SSH-ключи обязательны. В Windows варианты генерации ключей гибкие: от встроенного OpenSSH до классического PuTTY. Ниже изложены три подхода с практическими советами по безопасности, переносу ключей и решению типичных проблем.
Вариант 1: Генерация ключей в командной строке (Command Prompt / PowerShell / Windows Terminal)
Windows 10 и 11 содержат клиент OpenSSH. Откройте Командную строку (Win → введите “cmd”), PowerShell или Windows Terminal и выполните команду:
ssh-keygenПо умолчанию ssh-keygen создаст пару RSA 2048 бит и предложит сохранить файлы в папке пользователя в подпапке .ssh, например:
C:\Users\<ИмяПользователя>\.ssh\id_rsa
C:\Users\<ИмяПользователя>\.ssh\id_rsa.pubЕсли вы хотите конкретный алгоритм и длину ключа, укажите параметры, например RSA 4096 или Ed25519:
ssh-keygen -t rsa -b 4096
ssh-keygen -t ed25519 -C "you@example.com"Пояснения:
- -t задаёт тип ключа (rsa, ed25519 и др.).
- -b указывает битность (только для RSA).
- -C добавляет комментарий/идентификатор (обычно email).
Советы по шагам:
- При запросе имени файла введите кастомное имя, если хотите второй ключ: например id_rsa_github.
- Всегда используйте фразу-пароль (passphrase). Она защищает приватный ключ, если кто-то получит файл.
- После генерации публичный ключ (.pub) загружайте на сервер или в сервис (GitHub, GitLab, Bitbucket, панель VPS).
- Приватный ключ держите вне доступа: права должны быть ограничены.
Пример: сохранить второй ключ для GitHub
ssh-keygen -t ed25519 -C "me@work" -f C:\Users\me\.ssh\id_ed25519_githubФайлы: id_ed25519_github и id_ed25519_github.pub
Важно: если вы не видите папку .ssh в Проводнике, включите отображение скрытых файлов или выполните в PowerShell:
Get-ChildItem -Force C:\Users\<ИмяПользователя> | Where-Object { $_.Name -eq ".ssh" }Вариант 2: Генерация ключей в WSL (Ubuntu, Debian и др.)

WSL — удобный выбор, если вы работаете в Linux-окружении. Команды и поведение идентичны Linux:
ssh-keygen -t rsa -b 4096
ssh-keygen -t ed25519 -C "your@email.address"Отличия и советы:
- Путь к файлам в WSL: ~/.ssh (например /home/username/.ssh). Если вы хотите, чтобы ключи были доступны из Windows, можно разместить их на общей файловой системе, но это требует аккуратности с правами доступа.
- WSL менее интегрирован с Windows-агентом по умолчанию; используйте ssh-agent внутри WSL или настройте пересылку агента.
Пример команды для создания ключа и добавления в агент (WSL):
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Если вы используете VS Code Remote — хранение ключей в WSL упрощает работу, так как расширение подхватит локальные ключи без лишних конвертаций.
Вариант 3: Генерация ключей с помощью PuTTY (puttygen)

PuTTY остаётся популярным у пользователей Windows. В комплекте есть PuTTYgen (генератор ключей).
Шаги:
- Запустите puttygen (Win → введите “puttygen”).
- Внизу окна выберите тип ключа: RSA или EdDSA (Ed25519).
- Для RSA укажите “Number Of Bits In A Generated Key” = 4096.
- Нажмите Generate и — если требуется — двигайте мышь по окну для генерации энтропии.
- Нажмите Save public key для сохранения .pub.
- По умолчанию PuTTY сохраняет приватный ключ в формате PPK. Чтобы получить OpenSSH-ключ: Conversions → Export OpenSSH key и сохраните без расширения (id_rsa или id_ed25519).


Примечание: если вы используете PuTTY для подключения к серверам, PPK удобен. Для стандартных инструментов (git, scp, rsync) предпочтительнее OpenSSH-формат — экспортируйте ключ как OpenSSH.
Управление несколькими ключами и конфигурация ssh
Когда у вас несколько ключей (рабочий, личный, ключ для CI), используйте файл конфигурации ssh (~/.ssh/config) чтобы указать какой ключ использовать для какого хоста. Пример:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
IdentitiesOnly yes
Host myserver
HostName 203.0.113.42
User ubuntu
IdentityFile ~/.ssh/id_rsa_digitaloceanПояснение:
- IdentityFile указывает приватный ключ для подключения.
- IdentitiesOnly yes заставляет клиент использовать только указанные ключи (полезно при множестве ключей).
Если вы используете Windows OpenSSH, путь в конфиге может быть абсолютным, например:
IdentityFile C:\Users\me\.ssh\id_rsa_githubИспользование ssh-agent и менеджмент ключей
ssh-agent хранит расшифрованные ключи в памяти, чтобы не вводить фразу-пароль каждый раз.
В Windows (PowerShell):
# Запустить сервис агента
Start-Service ssh-agent
# Добавить ключ (потребуется ввести passphrase один раз)
ssh-add C:\Users\me\.ssh\id_ed25519В WSL:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Совет: настройте автозапуск ssh-agent при входе в систему, если считаете компьютер безопасным. Для ноутбуков вне дома это повышает риск — выбирайте с осторожностью.
Перенос ключей на новый ПК и резервное копирование
Рекомендации:
- Скопируйте приватный ключ (и файлы конфигурации) в зашифрованный контейнер или на внешний носитель, затем перенесите.
- Не пересылайте приватный ключ по незашифрованным каналам (email, незашифрованный облачный диск без шифрования).
- Проверьте права доступа: приватный ключ должен быть доступен только владельцу. В Windows можно использовать icacls:
icacls C:\Users\me\.ssh\id_rsa /inheritance:r /grant:r "%USERNAME%:(R,W)"(Команда примерная — убедитесь, что права соответствуют вашей политике безопасности.)
Как добавлять публичный ключ на GitHub / GitLab / VPS
- GitHub: Settings → SSH and GPG keys → New SSH key → вставьте содержимое id_ed25519.pub, дайте имя (например “Work laptop”).
- DigitalOcean / VPS: добавьте публичную строку в ~/.ssh/authorized_keys на сервере.
Пример команды для копирования ключа на сервер (если доступно по паролю):
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server.example.comЕсли ssh-copy-id недоступен в Windows, откройте server: ~/.ssh/authorized_keys и добавьте содержимое .pub вручную.
Сравнение алгоритмов (кратко)
- RSA: широко поддерживается, рекомендуют 2048+ бит; для будущей безопасности 4096 бит лучше.
- Ed25519: современный, короткие ключи, быстрый и безопасный выбор; рекомендован для новых ключей.
- ECDSA: вариативен, но поддержка и реализация исторически сложнее.
Практическое правило: для новых ключей используйте Ed25519, если сервис поддерживает его.
Решение проблем (troubleshooting)
Проблема: “Permission denied (publickey)”
- Проверьте, что публичный ключ добавлен в authorized_keys на сервере.
- Убедитесь, что права на ~/.ssh и ~/.ssh/authorized_keys на сервере корректны (700 для ~/.ssh, 600 для authorized_keys).
- Запустите ssh с подробным логом: ssh -vvv user@host и изучите, какие ключи пробуются.
Проблема: ключ не используется, когда есть много ключей
- Добавьте IdentitiesOnly yes в ~/.ssh/config для соответствующего хоста и укажите IdentityFile.
Проблема: PuTTY не принимает OpenSSH-ключ
- Экспортируйте приватный ключ в формате PPK через puttygen или наоборот: PuTTY → Conversions → Import key.
Пример плейбука / SOP для создания ключа и добавления в GitHub (шаги)
- Откройте Windows Terminal / PowerShell.
- Создайте ключ Ed25519: ssh-keygen -t ed25519 -C “you@domain” -f C:\Users\me.ssh\id_ed25519_github
- Введите сложную фразу-пароль и запомните/сохраните её в менеджере паролей.
- Запустите ssh-agent и добавьте ключ: ssh-add C:\Users\me.ssh\id_ed25519_github
- Скопируйте содержимое id_ed25519_github.pub и вставьте в GitHub → Settings → SSH and GPG keys.
- Проверьте подключение: ssh -T git@github.com
Критерии приёмки
- Команда ssh -T git@github.com возвращает успех (или сообщение приветствия GitHub).
- Приватный ключ сохранён и защищён фразой-паролем.
- Файл конфигурации (если нужен) настроен и протестирован.
Чек-лист по ролям
Разработчик:
- Создал ключ Ed25519 для работы.
- Добавил публичный ключ в GitHub/GitLab.
- Настроил ~/.ssh/config для удобного доступа.
Системный администратор:
- Настроил права на ~/.ssh и authorized_keys на серверах.
- Подготовил инструкцию для сотрудников по резервному копированию ключей.
- Проверил политику ротации ключей и отзыв доступа при увольнении.
Краткий словарь (1 строка)
SSH-ключи: пара криптографических ключей (приватный + публичный) для аутентификации на удалённых серверах без пароля.
Ментальная модель и когда это не сработает
Ментальная модель: публичный ключ — это «замок» на сервере, приватный ключ — ваш «ключ». Сервер открывает дверь, если ключ подходит к замку.
Когда это не подходит:
- Если у вас нет доступа к панели управления сервера или к аккаунту (нельзя загрузить публичный ключ).
- Если политика безопасности организации запрещает использование личных ключей без централизованного управления.
Простая диаграмма принятия решения
flowchart TD
A[Нужен доступ по SSH?] -->|Да| B{Установлен OpenSSH на Windows?}
B -->|Да| C[Использовать ssh-keygen]
B -->|Нет| D{Используете PuTTY?}
D -->|Да| E[Использовать puttygen + экспорт OpenSSH]
D -->|Нет| F[Установить Windows Terminal или WSL и использовать ssh-keygen]
A -->|Нет| G[SSH не нужен]Безопасность и GDPR / приватность
- Приватные ключи не содержат персональных данных, но доступ к системам может раскрыть информацию — храните приватные ключи надёжно.
- При совместном использовании рабочих ресурсов следуйте корпоративной политике по хранению и ротации ключей.
Короткое резюме
Генерировать SSH-ключи в Windows просто: используйте ssh-keygen в Command Prompt/PowerShell/Windows Terminal, WSL для Linux-ориентированных сред или PuTTY при приверженности к этому инструменту. Создавайте разные ключи для разных сервисов, храните приватные ключи в безопасном месте, используйте ssh-agent и ~/.ssh/config для удобства и безопасности. Резервное копирование и контроль прав доступа помогут избежать потери доступа при смене устройства.
Важно
- Всегда делайте резервную копию приватного ключа в зашифрованном виде.
- Не публикуйте приватный ключ и не отправляйте его по незашифрованным каналам.
Ключевые команды для быстрого копирования:
# Создать Ed25519 (Windows/WSL)
ssh-keygen -t ed25519 -C "you@example.com"
# Создать RSA 4096
ssh-keygen -t rsa -b 4096
# Добавить ключ в агент (Windows)
Start-Service ssh-agent
ssh-add C:\Users\me\.ssh\id_ed25519
# Проверить подключение к GitHub
ssh -T git@github.comПохожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone