Ssh key windows 10 где находится

Описываются особенности настройки встроенного в Windows 10 SSH сервера для обеспечения доступа к нему по ключам без ввода пароля, в том числе, приёмы для передачи публичных ключей и установки прав доступа к файлам с ними.

SSH • Windows • Конфигурирование • OpenSSH • Компьютерные истории • Истории

Доступ по ключам к SSH серверу Windows 10

Введение

Начиная с верcии 1803, в Windows 10 доступны SSH клиент и SSH сервер, причём, SSH клиент установлен и готов к использованию, как говорится, прямо из коробки, а SSH сервер надо устанавливать, но делается это буквально в пару-тройку кликов мышкой[1]. Что это означает? С точки зрения клиента можно говорить о том, что сторонние программы, такие как PuTTY, вроде как больше не нужны. С точки зрения сервера — не надо устанавливать никакие сторонние серверы, если есть решение интегрированное.

В работе что клиент, что сервер, практически не отличаются от того ПО, к которому я привык в Debian. Но, как ни крути, есть некоторые отличия, и вот об одном из них попробую сейчас рассказать. Речь пойдет о подключении к SSH серверу, работающему на Windows, с клиента, в моем случае, работающего на Debian Jessie, причем, без использования пароля, то есть, задействуя ключи.

На самом деле, начало процесса не отличается от стандартного: если у вас нет набора ключей, вам его надо сгенерировать, если есть — используйте существующий. Речь сейчас идёт о той машине, которая будет клиентом. И я уже как-то писал об этом, но на некоторых моментах всё-таки остановлюсь ещё раз: повторенье — мать ученья 😉.

Про генерацию ключей

Итак, если ключей нет и вы работаете на системе под управлением Linux, то вот эта команда поможет вам их сгенерировать:

ssh-keygen -t rsa

Если же вы работаете под Windows, то у вас есть несколько возможностей сгенерировать ключи:

  • Если вы работаете под Windows 10 и включили возможность использовать встроенный SSH клиент, то смело используйте команду ssh-keygen — должно сработать… 🙄😉
  • Если вы работаете под Windows 10и включили возможность использовать WSL, то можете воспользоваться возможностями этой подсистемы, то есть, использовать в ней… всё ту же команду ssh-keygen.
  • Если вы работаете под Windows 10и у вас не установлен встроенный SSH клиент и не включена возможность использования WSL, или же у вас более ранняя версия Windows, то придется использовать стороннее ПО, тот же PuTTY с его генератором PuTTYgen — для этого случая есть достаточно подробная документация.

Если пара ключей успешно сгенерирована, или уже была у вас, то необходимо «доставить» публичный ключ на сервер и там сделать его доступным для использования SSH сервером. И вот тут то и начинаются отличия от обычного — для мира Linux — процесса.

Доставка публичного ключа на сервер Linux

Что я делал, когда мне надо было «доставить» ключ на SSH сервер, работающий на Linux? Всё очень просто — запуск следующей команды на клиентской машине решал все вопросы:

ssh-copy-id user_name@server_name_or_ip

где user_name — имя пользователя, ключ которого передаётся на сервер, а server_name_or_ip — имя или адрес хоста с сервером SSH, к которому есть желание подключаться без ввода пароля (от имени пользователя с ключом). Иногда команда не работала и приходилось явно указывать файл (при помощи параметра командной строки -i), в котором хранился публичный ключ, но это, в большей степени, зависело от устройства, на котором выполнялась эта команда, вернее, от версии ОС, ну и от реализации и версии криптографического ПО, конечно.

Но, в случае, когда в качестве сервера выступает машина с Windows, этот приём не прокатывает — ключ не передаётся на нужный хост и всё. Не знаю, эксперименты эти я проводил довольно давно, может, в новых версиях Windows эту «особенность» исправили, а может и нет. В любом случае, тогда мне пришлось искать обходной путь.

Собственно, сам этот путь очевиден — раз не получается сделать передачу ключа автоматом, надо всё выполнить вручную. А для этого необходимо знать, где и как Windows хранит публичные ключи, используемые SSH сервером для аутентификации клиентов. К счастью, в документации Microsoft есть необходимая информация и её надо просто использовать. Давайте её детально разберём, при том держа в уме, что документация предполагает работу с клиентской машины под управлением Windows с заранее настроенным доступом по SSH к необходимому серверу.

Создание каталога для хранения ключей

Итак, из документации становится очевидно, что Windows хранит пользовательские ключи, используя тот же принцип, что и Linux: на сервере в файле authorized_keys в подкаталоге .ssh домашнего каталога пользователя (а это, как правило, c:Usersuser_name, где user_name — имя пользователя), от имени которого вы хотите работать в установившемся SSH сеансе. Если этого каталога нет, его надо создать, для чего предлагается использовать команду:

ssh user_name@domain_name@host_name "mkdir C:\users\user_name\.ssh\"

где user_name — имя пользователя, domain_name — имя домена, в который входит пользователь (его можно опустить для локальных пользователей на удалённом сервере), host_name — имя или адрес хоста, к которому подключаемся. Приведённая мною команда несколько отличается от той, которая дана в документации, но следует помнить, что я работаю с клиентской машины под управлением Linux.

Копирование публичного ключа

Далее, предлагается скопировать во вновь созданный каталог файл с публичным ключом пользователя, от имени которого вы работаете на клиентской машине при подключении к серверу по SSH (команда слегка отличается от той, которая приведена в документации, так как я работаю с машины под управлением Debian):

scp ~/.ssh/public_key_file_name.pub user_name@domain_name@host_name:C:Usersuser_name.sshauthorized_keys

где public_key_file_name.pub — имя файла публичного ключа, например, id_ed25519.pub или id_rsa.pub (далее в примерах я буду использовать для простоты id_rsa.pub).

На этом моменте хотелось бы остановиться подробнее. Обычно вы работаете на своём компьютере (или виртуалке) под своим собственным пользователем. Когда вы подключаетесь к удалённой машине по SSH, вы можете подключаться под именем своего текущего пользователя локальной машины, или использовать имя какого-либо пользователя удалённого компьютера, или же — доменное имя. Конечно, в любом случае на удалённом хосте должен существовать соответствующий пользователь (или разрешено использовать доменное имя), даже если его имя будет совпадать с именем пользователя, под которым вы работаете на своём локальном хосте. Так вот, совсем не обязательно, что вы единственный подключаетесь к удалённому хосту под определенным пользователем, вполне возможно, что с других хостов другие люди (или вы сами?) также подключаются по SSH, используя ту же самую учётную запись.

Возможно то, что я написал выше, это «ужас-ужас» с точки зрения безопасности, но такая ситуация весьма вероятна в домашних и небольших офисных сетях (да и не только 🙁), в которых не сильно заморачиваются с администрированием. И вот в таких случаях, копировать файл со своим публичным ключом — плохая идея: вы просто затрёте существующий файл authorized_keys с публичными ключами других пользователей (или ваших собственных ключей на других компьютерах — вряд ли вы переносите свою единственную пару ключей с хоста на хост 😉). Поэтому следует рассмотреть возможность добавлять свой ключ к соответствующему файлу на удалённом хосте.

Добавление публичного ключа

Естественно, возникает вопрос, как это можно сделать. И на этот вопрос существует множество ответов. Например, если у вас есть доступ к удалённому хосту по RDP, то можно отредактировать на нём файл authorized_keys с помощью того же notepad-а, добавив содержимое своего файла с публичным ключом. Или же, можно скопировать свой файл с публичным ключом на нужный сервер и объединить его с существующим файлом, а затем — удалить (конечно, при этом у вас, вернее, у вашего пользователя на удалённом компьютере, должны быть права на редактирование файла authorized_keys):

scp ~/.ssh/id_rsa.pub user_name@domain_name@host_name:C:/Users/user_name/.ssh/my_public_key_file_name.pub
ssh user_name@domain_name@host_name "type C:\Users\user_name\.ssh\my_public_key_file_name.pub >> C:\Users\user_name\.ssh\authorized_keys"
ssh user_name@domain_name@host_name "del /Q C:\Users\user_name\.ssh\my_public_key_file_name.pub"

Обратите внимание на использование символов ‘/’ в команде scp и » в командах ssh — так как мы работаем на Debian, то в команду scp можно передать путь на хосте с Windows с использованием нестандартного для Windows разделителя ‘/’, а вот в команды, выполняемые при помощи ssh на том же удалённом компьютере, следует передавать символы »,то есть, стандартный для Windows разделитель » с предшествующим символом », так называемый «escaped backslash», иначе Windows не найдёт нужные файлы.

Назначение прав доступа к файлу с публичными ключами

Вот мы и подошли к последнему шагу — предоставлению прав доступа к файлу authorized_keys. Именно этим занимается команда:

ssh --% user_name@domain_name@host_name powershell -c $ConfirmPreference = 'None'; Repair-AuthorizedKeyPermission C:Usersuser_name.sshauthorized_keys

Основную смысловую нагрузку в этой составной команде несёт функция Repair-AuthorizedKeyPermission из модуля OpenSSHUtils для PowerShell (да, именно PowerShell используется в качестве командной оболочки в этот раз). Этот модуль надо устанавливать отдельно, например, так (выполнять эту команду надо, естественно, из PowerShell):

Install-Module -Force OpenSSHUtils -Scope AllUsers

Так вот, когда я запустил эту команду, ответом мне стало сообщение об ошибке:

Совпадения для указанных условий поиска и имени пакета "OpenSSHUtils" не найдены.

Естествено, я начал разбираться в сложившейся ситуации, после чего, если честно, желание использовать этот модуль у меня стало исчезающе малым.

Суть в том, что Windows 10 предъявляет определённые требования к безопасности файла authorized_keys (на самом деле, к безопасности публичных ключей). Причины, по которым это происходит, наверное, не надо объяснять. Так вот, в документации Microsoft указывается, что при использовании Windows 10 доступ может быть предоставлен только администаторам и специальному пользователю SYSTEM. Там же советуется использовать модуль OpenSSHUtils, который должен оказать помощь при установке нужных прав. Собственно, при использовании предложенного в документации подхода я и наткнулся на ошибку. Но кроме документации от Microsoft я нашёл довольно много информации о проблемах, вызванных использованием этого модуля. Если попробовать кратко изложить содержимое ответов на возникающие у пользователей вопросы и проблемы, то получится что-то типа:

«Не используйте этот модуль, он дополнительно предоставит права пользователю sshd, после чего у вас перестанут соблюдаться требования к безопасности публичных ключей.»

Вот честно, не знаю, так это, или нет, но проверять расхотелось, тем более, что совсем не трудно задать нужные права самостоятельно. После некоторого изучения вопроса — я не большой специалист в PowerShell — получился вот такой вот набор команд[2] (я приведу их полностью, потом разберу для чего нужна каждая из них):

$acl = Get-Acl C:Usersuser_name.sshauthorized_keys
$acl.SetAccessRuleProtection($true, $false)
$adminsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Администраторы","FullControl","Allow")
$sysRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($adminsRule)
$acl.SetAccessRule($sysRule)
Set-Acl -Path C:Usersuser_name.sshauthorized_keys -AclObject $acl

Теперь, как и обещал, небольшие пояснения по командам. Итак, для начала, при помощи cmdlet-а Get-Acl получаем дескриптор безопасности, содержащий ACL (Access Control List) нужного нам объекта файловой системы (параметр командной строки Path можно опустить) и сохраняем результат в переменной $acl. Далее, используя метод SetAccessRuleProtection полученного объекта, запрещаем наследование прав (true в первом параметре) и отказываемся от сохранения унаследованных ранее прав (false во втором параметре). Затем создаём два объекта, описывающих правила доступа к объектам файловой системы: один (сохраняется в переменной $adminsRule) — для Администраторов, второй (сохраняется в переменной $sysRule) — для специального пользователя SYSTEM. Теперь, при помощи метода SetAccessRule, добавляем только что соданные ACL к дескриптору безопасности нашего файла, хранящегося в переменной $acl. После чего, всё, что нам остаётся сделать — применить полученный дескриптор, для чего используем cmdlet Set-Acl.

Ну вот, теперь, когда мы выполнили все шаги, всё должно заработать. Но, в моём случае, не заработало. Очередная неудача заставила меня вновь полезть в документацию, что обогатило меня новыми знаниями. Рассказываю…

Публичные ключи для работы от имени пользователей администраторов

Причиной того, что при соединении с SSH сервером мне, несмотря на все предыдущие мытарства, продолжало выводиться требование ввести пароль, было то, что я пытался подключиться под пользователем, который входил в группу локальных Администраторов. У Windows 10 в этом случае есть требование — публичные ключи должны храниться в файле %programdata%/ssh/administrators_authorized_keys, то есть, обычно, в C:ProgramDatasshadministrators_authorized_keys.

Что ж, для того, чтобы решить проблему, можно воспользоваться двумя путями. Первый путь — воспользоваться процедурой добавления публичного ключа, рассмотренной нами выше. Да-да, все эти шаги: копирование, добавление, предоставление прав, только применяем их не к authorized_keys, а к administrators_authorized_keys. Я напишу, на всякий случай, полную последовательность команд, чтобы удобно было воспользоваться, но не забудьте подставить свои значения для пользователя, домена и хоста.

scp ~/.ssh/id_rsa.pub user_name@domain_name@host_name:C:/Users/user_name/.ssh/my_public_key_file_name.pub
ssh user_name@domain_name@host_name "type C:\Users\user_name\.ssh\my_public_key_file_name.pub >> C:\ProgramData\ssh\administrators_authorized_keys"
ssh user_name@domain_name@host_name "del /Q C:\Users\user_name\.ssh\my_public_key_file_name.pub"
$acl = Get-Acl C:ProgramDatasshadministrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$adminsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Администраторы","FullControl","Allow")
$sysRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($adminsRule)
$acl.SetAccessRule($sysRule)
Set-Acl -Path C:ProgramDatasshadministrators_authorized_keys -AclObject $acl

Второй путь чуть более радикальный — изменить настройки SSH сервиса. Настройки эти хранятся в файле %programdata%/ssh/sshd_config. Как оказалось, именно там определяется, где должны храниться публичные ключи тех пользователей, которые подключаются к SSH серверу от имени пользователей, входящих в группу администраторов. Вот, собственно, эти строки:

...
Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
...

Так вот, эти строки надо закомментировать или удалить, после чего SSH сервер надо перезапустить.

Какой путь использовать — решать вам. Я же, пожалуй, закончу — пост получился и так слишком длинным…


  1. На самом деле, в виде beta версий эти компоненты были доступны и раньше, но и установка и стабильность работы, были, что называется, не на высоте. ↩︎

  2. Честно признаюсь, очень многое я подсмотрел в документации, например, как отключить наследование прав, или предоставить Администраторам полный контроль над файлом, и лишь немного адаптировал эти примеры к собственным нуждам. ↩︎

Subscribe to Записки на полях

Get the latest posts delivered right to your inbox

Great! Check your inbox and click the link to confirm your subscription.

Please enter a valid email address!

Если вы не знаете, как просматривать сертификаты SSH, мы покажем вам, как это реализовать на Linux, macOS и Windows.

Бывают моменты, когда вам действительно нужно просмотреть свои сертификаты SSH в Linux.

Зачем?

Скажем, например, вам нужно добавить сертификат для аутентификации в GitHub (или любой другой онлайн-сервис, требующий аутентификации SSH).

Вы знаете, что создали эти сертификаты SSH, но как их посмотреть?

Те, кто знаком с SSH, вероятно, уже знают ответ на этот вопрос.

Для остальных я покажу, насколько легко просмотреть эти ключи SSH, чтобы вы могли использовать их для сторонних служб.

Содержание

  1. Что вам понадобится
  2. Как посмотреть свой открытый ключ SSH на Linux
  3. Как посмотреть свой открытый ключ SSH на macOS
  4. Как посмотреть свой открытый ключ SSH на Windows
  5. Как посмотреть свой закрытый ключ

Что вам понадобится

Единственное, что вам понадобится для этого, – это доступ к серверу или рабочему столу (Linux, macOS или Windows) и созданный ключ SSH.

Если вы еще не создали свою пару ключей SSH, вы можете сделать это с помощью команды:

ssh-keygen

Эта команда сгенерирует пару ключей, как открытый, так и закрытый ключи.

Открытый ключ – это тот ключ, который вы отправляете на серверы для аутентификации по ключу SSH.

Когда вы пытаетесь войти на этот сервер, SSH сравнивает открытый и закрытый ключи.

Если эти ключи совпадают, вам будет разрешен доступ.

Тут все достаточно просто.

Как посмотреть свой открытый ключ SSH на Linux

Есть два простых способа просмотреть свой открытый ключ SSH на Linux.

Первый метод немного сложен, потому что в нем используются команды ssh-agent и ssh-add.

Вероятно, это излишне для того, что вам нужно, но это хороший способ просмотреть ключ, требуя при этом пароль вашей пары ключей SSH.

Команда такая:

ssh-agent sh -c 'ssh-add; ssh-add -L'

После успешной аутентификации ваш открытый ключ SSH будет показан в терминале.

Затем вы можете скопировать его и вставить туда, куда вам нужно.

Если вы не хотите запоминать еще одну команду, вы можете просто использовать команду cat следующим образом:

cat ~/.ssh/id_rsa.pub

Вышеупомянутая команда выведет ваш SSH-ключ на вашем терминале без запроса пароля.

Как посмотреть свой открытый ключ SSH на macOS

Просмотр ключей на macOS можно выполнить аналогично Linux.

Откройте окно терминала и введите команду:

cat ~/.ssh/id_rsa.pub

или:

cat /Users/USERNAME/.ssh/id_rsa.pub

Где USERNAME – ваше имя пользователя macOS.

Приведенные выше команды выведут ваш открытый ключ SSH.

В macOS есть еще один интересный трюк.

Вы можете скопировать содержимое ключа SSH прямо в буфер обмена, не отображая ключ, с помощью инструмента pbcopy.

Эта команда будет следующей:

cat ~/.ssh/id_rsa.pub | pbcopy

После того, как вы скопировали ключ в буфер обмена, вы можете вставить его куда угодно.

Как посмотреть свой открытый ключ SSH на Windows

В Windows вы будете использовать команду type для просмотра открытого ключа SSH следующим образом:

type C:UsersUSERNAME.sshid_rsa.pub

Где USERNAME – имя вашего пользователя.

Приведенная выше команда отобразит ваш открытый ключ SSH.

Затем вы можете использовать сочетание клавиш Ctrl + c, чтобы скопировать содержимое файла.

Вы также можете сделать что-то похожее на то, что мы делали в macOS (копирование открытого ключа SSH непосредственно в буфер обмена), используя следующие команды type и clip:

type  C:UsersUSERNAME.sshid_rsa.pub | clip

Где USERNAME – ваше имя пользователя.

Теперь вы можете вставить этот ключ в любое место.

Как посмотреть свой закрытый ключ

Скорее всего, вам никогда не придется просматривать свой закрытый ключ.

В конце концов, это секрет, который никогда не выставляется на всеобщее обозрение.

Но, если вам действительно нужно просмотреть этот ключ, вы можете выполнить те же действия, что и выше, но удалить .pub из имени файла (в любом случае).

Помните, что id_rsa – это закрытый ключ, а id_rsa.pub – открытый ключ.

И это все, что нужно для просмотра открытых и закрытых ключей SSH в Linux, macOS и Windows.

В этой статье мы настроим SSH аутентификацию в Windows по RSA или EdDSA ключам для безопасного доступа к удаленным компьютерам/серверам. Рассмотрим, как сгенерировать открытый и закрытый ключи (сертификаты) в Windows и настроить сервер OpenSSH в Windows 10/11 и Windows Server 2019/2022 для аутентификации по ключам (без паролей).

Аутентификация по SSH ключам широко используется в мире Linux, а в Windows этот функционал появился относительно недавно. Идея заключается в том, что на SSH сервере добавляется открытый ключ клиента и при подключении сервер проверяет наличие соответствующего закрытого ключа у клиента. Таким образом удаленный пользователь может аутентифицироваться в Windows без ввода пароля.

Содержание:

  • Генерация SSH ключей на клиенте Windows
  • Настройка OpenSSH в Windows для авторизации по ключам
  • Вход по SSH ключу для локальных администраторов Windows

Генерация SSH ключей на клиенте Windows

На клиентском, компьютере, с которого вы будет подключаетесь к удалённому серверу Windows с OpenSSH, вам нужно сгенерировать пару ключей (открытый и закрытый). Закрытый ключ хранится на клиенте (не отдавайте его никому!), а открытый ключ нужно скопировать в файл authorized_keys на SSH сервере. Чтобы сгенерировать SSH ключи на клиенте Windows, вы должны установить клиент OpenSSH.

В Windows 10/11 и Windows Server 2019/2022 клиент OpenSSH устанавливается как отдельный встроенный компонент с помощью PowerShell:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Запустите обычную (непривилегированную сессию PowerShell) и сгенерируйте пару ED25519 ключей:

ssh-keygen -t ed25519

По умолчанию утилита ssh-keygen генерирует ключи RSA 2048. В настоящий момент вместо RSA ключей рекомендуется использовать именно ED25519.

Утилита попросит вас указать пароль для защиты закрытого ключа. Если вы укажете пароль, то каждый раз при использовании этого ключа для SSH авторизации, вы должны будете вводить этот пароль. Я не стал указывать пароль для ключа (не рекомендуется).

windows ssh-keygen генерация пары ssh ключей

Generating public/private ed25519 key pair. Enter file in which to save the key (C:Usersmyuser/.ssh/id_ed25519):  

Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:Usersmyuser/.ssh/id_ed25519. Your public key has been saved in C:Usersmyuser/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:C2wXeCQSUcJyq0 [email protected] The key's randomart image is: +--[ED25519 256]--+ | ..*O=..o. | +----[SHA256]-----+

Утилита ssh-keygen создаст каталог .ssh в профиле текущего пользователя Windows (%USERPROFILE%.ssh) и сгенерирует 2 файла:

  • id_ed25519
    – закрытый ключ (если вы сгенерировали ключ типа RSA, файл будет называться
    id_rsa
    )
  • id_ed25519.pub
    – публичный ключ (аналогичный RSA ключ называется
    id_rsa.pub
    )

открытый и закрытый ssh ключи в windows

После того, как ключи созданы, вы можете добавить закрытый ключ в службу SSH Agent, которая позволяет удобно управлять закрытыми ключами и использовать их для аутентификации.

SSH Agent может хранить закрытые ключи и предоставлять их в контексте безопасности текущего пользователя. Запустите службу ssh-agent и настройте автоматический запуск с помощью PowerShell команд управления службами:

Set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent

Добавьте ваш закрытый ключ в базу ssh-agent:

ssh-add "C:Usersuser.sshid_ed25519"

Identity added: C:Userskbuldogov.sshid_ed25519 ([email protected])

добавить ключ в ssh агент windows
Или так:

ssh-add.exe $ENV:UserProfile.sshid_ed25519

Настройка OpenSSH в Windows для авторизации по ключам

SSH сервер (в этом примере это удаленный компьютер с Windows 11 и настроенной службой OpenSSH).

Скопируйте файл id_ed25519.pub в каталог .ssh профиля пользователя, под которым вы будете подключаться к SSH серверу. Например, у меня в Windows 11 создан пользователь user1, значит я должен скопировать ключ в файл C:Usersuser1.sshauthorized_keys.

В данном примере подразумевается, что user1 это обычная учетная запись пользователя без прав локального администратора на компьютере с сервером SSH.

Если каталог .ssh в профиле отсутствует, его нужно создать вручную.

файл с открытым ключом на сервере ssh authorized_keys

Можно скопировать ключ на SSH сервер с клиента с помощью SCP:

scp C:Usersyouruser.sshid_rsa.pub [email protected]:c:usersuser1.sshauthorized_keys

В один файл authorized_keys можно добавить несколько открытых ключей.

По умолчанию в OpenSSH сервере в Windows отключена аутентификация по ключам. Вы можете проверить это в конфигурационном файле sshd_config. Проще всего получить список разрешенных способов аутентификации в OpenSSH с помощью такой PowerShell команды (Select-String используется как аналог grep в PowerShell):

cat "C:ProgramDatasshsshd_config"| Select-String "Authentication"

#PubkeyAuthentication yes
#HostbasedAuthentication no
# HostbasedAuthentication
 PasswordAuthentication yes
#GSSAPIAuthentication no

включить ssh аутентфикацию по ключам в windows

В этом примере строка PubkeyAuthentication закомментирована, значит этот способ аутентификации отключен.

Откройте файл sshd_config с помощью блокнота, раскоментируйте строку:

Notepad C:ProgramDatasshsshd_config

PubkeyAuthentication yes

параметр PubkeyAuthentication yes в файле sshd_config

Также в конфигурационном файле sshd_config придется отключить режим StrictModes. По умолчанию этот режим включен и запрещает аутентификацию по ключам, если закрытый и открытый ключ недостаточно защищены. Раскомментируйте строку
#StrictModes yes
, измените на
StrictModes no
.

sshd_config отключить StrictModes

Сохраните файл и перезапустите службу sshd:

Restart-Service sshd

Теперь вы можете подключиться к SSH серверу без ввода пароля пользователя. А если вы не задали пароль (passphrase) для закрытого ключа, вы сразу автоматически подключитесь к вашему удаленному серверу Windows.

Для подключения через SSH к удаленному хосту используется следующая команда:

ssh (username)@(имя или IP адрес SSH сервера)

Например,

ssh [email protected]

Это означает, что вы хотите подключиться к удаленному SSH серверу с адресом 192.168.1.90 под учетной записью admin. Служба SSH Agent автоматически попытается использовать для авторизации сохраненный ранее закрытый ключ.

  • Если вы не хотите использовать ssh-agent для управления ключами, вы можете указать путь к закрытому ключу, который нужно использовать для SSH аутентификации:
    ssh [email protected] -i "C:Usersuser.sshid_ed25519"
  • Для подключения с помощью учетной записи пользователя из домена Active Directory используется формат:
    ssh [email protected]@168.1.90 -i <private_key_absolute_path>

первое подключение к windows по ssh добавить отпечаток ключа

При первом подключении нужно добавить отпечаток ключа SSH сервера в доверенные. Наберите yes -> Enter.

The authenticity of host '192.168.1.90 (192.168.1.90)' can't be established.
ECDSA key fingerprint is SHA256:LNMJTbTS0EmrsGYTHB3Aa3Tisp+7fvHwZHbTA900ofw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Информацию по аутентификации в Windows с помощью SSH ключей можно найти в журнале события. В современных версиях OpenSSH логи пишутся не в текстовые файлы, а в отдельный журнал Event Viewer (Application and services logs -> OpenSSH -> Operational).

При успешном подключении с помощью ключа в журнале появится событие:

EventID 4
sshd: Accepted publickey for locadm from 192.168.14.1 port 55772 ssh2: ED25519 SHA256:FEHDWM/J74FbIzCCoJNbh14phS67kQgh7k8UrKPSvCM

событие ssh аутентфикации по ключу в event viewer windows 11

Если вы не смогли подключиться к вашему SSH серверу по RSA ключу, и у вас все равно запрашивается пароль, скорее всего пользователь, под которым вы подключаетесь, входит в группу локальных администраторов сервера (SID группы S-1-5-32-544). Об этом далее.

ssh подключение по ключу под администратором

Вход по SSH ключу для локальных администраторов Windows

В OpenSSH используются особые настройки доступа по ключам для пользователей с правами локального администратора Windows.

В первую очередь, вместо ключа authorized_keys в профиле пользователя нужно использовать файл с ключами C:ProgramDatasshadministrators_authorized_keys. Вам нужно добавить ваш ключ в этот текстовый файл (в целях безопасности права на этот файл должны быть только у группы Administrators и SYSTEM).

файл administrators_authorized_keys ключи для ssh входа под локальными администраторами

Вы можете изменить NTFS права на файл с помощью:

  • утилиты icacls:
    icacls.exe "C:ProgramDatasshadministrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F
  • или с помощью PowerShell командлетов get-acl и set-acl:
    get-acl "$env:programdatasshssh_host_rsa_key" | set-acl "$env:programdatasshadministrators_authorized_keys"

настройка ntfs прав доступа к файлу administrators_authorized_keys для ssh доступа по ключам в windows

После этого SSH аутентификация по ключам работает даже при отключенном режиме StrictModes

alert]Чтобы использовать ключ authorized_keys из профиля пользователя, и не переносить данные открытого ключа в файл administrators_authorized_keys, вы можете закомментировать строку в файле конфигурации OpenSSH (C:ProgramDatasshsshd_config).

Закомментируйте строки:

#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Match Group administrators AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Дополнительно в файле sshd_config вы можете запретить SSH подключение по паролю по паролю:

PasswordAuthentication no

После сохранения изменений в файле sshd_config не забудьте перезапустить службу sshd.

restart-service sshd

Если вы установили PasswordAuthentication no, и некорректно настроите аутентификацию по ключам, то при подключении по ssh будет появляться ошибка:

[email protected]: Permission denied (publickey,keyboard-interactive).

ошибка ssh аутентфикации в windows по ключу Permission denied publickey keyboard interactive

В OpenSSH на Linux доступна опция PermitRootLogin, позволяющая ограничить доступ к SSH серверу под аккаунтом root. В Windows OpenSSH эта директива не доступна и для ограничения доступа администраторов нужно использовать параметр DenyGroups.

Итак, вы настроили SSH аутентификацию в Windows по открытому RSA-ключу (сертификату). Теперь вы можете использовать такой способ аутентификации для безопасного доступа к удаленным северам, автоматического поднятия проброса портов в SSH туннеле, запуска скриптов и других задачах автоматизации.

2019-04-07 UPDATE:
I tested today with a new version of windows 10 (build 1809, «2018 October’s update») and not only the open SSH client is no longer in beta, as it is already installed. So, all you need to do is create the key and set your client to use open SSH instead of putty(pagent):

  1. open command prompt (cmd)
  2. enter ssh-keygenand press enter
  3. press enter to all settings. now your key is saved in c:Users.sshid_rsa.pub
  4. Open your git client and set it to use open SSH

I tested on Git Extensions and Source Tree and it worked with my personal repo in GitHub.
If you are in an earlier windows version or prefer a graphical client for SSH, please read below.

2018-06-04 UDPATE:

On windows 10, starting with version 1709 (win+R and type winver to find the build number), Microsoft is releasing a beta of the OpenSSH client and server.
To be able to create a key, you’ll need to install the OpenSSH server. To do this follow these steps:

  1. open the start menu
  2. Type «optional feature»
  3. select «Add an optional feature»
  4. Click «Add a feature»
  5. Install «Open SSH Client»
  6. Restart the computer

Now you can open a prompt and ssh-keygen and the client will be recognized by windows. I have not tested this.
If you do not have windows 10 or do not want to use the beta, follow the instructions below on how to use putty.


ssh-keygen does not come installed with windows. Here’s how to create an ssh key with Putty:

  1. Install putty
  2. Open PuttyGen
  3. Check the Type of key and number of bytes to usePuttyGen parameters
  4. Move the mouse over the progress bar generating key with mouse input
  5. Now you can define a passphrase and save the public and private keys key created dialog

For openssh keys, a few more steps are required:

  1. copy the text from «Public key for pasting» textbox and save it as «id_rsa.pub»
  2. To save the private key in the openssh format, go to Conversions->Export OpenSSH key ( if you did not define a passkey it will ask you to confirm that you do not want a pass key)
    menu for converting key to OpenSSH format
  3. Save it as «id_rsa»

Now that the keys are saved. Start pagent and add the private key there ( the ppk file in Putty’s format)
pagent keys dialog

Remember that pagent must be running for the authentication to work

Почти на всем протяжении жизни Windows-систем главной утилитой для работы с SSH (secure shell или безопасная оболочка) была программа PuTTY. В октября 2018 года разработчики Windows выпустили сборку 1809 (Редстоун 5 или просто RS5) с компонентом OpenSSH и сторонние утилиты стали не нужны.

SSH-клиент в Windows 10 доступен в виде компонента «Клиент OpenSSH». Проверить его наличие можно в настройках системы — «Параметры» > «Приложения» > «Дополнительные компоненты» > список ниже. Если «Клиент OpenSSH» отсутствует в списке, то добавьте его.

Настройка сервиса SSH-AGENT

SSH-AGENT — это менеджер ssh-ключей. Для его активации достаточно ввести в PowerShell его наименование ssh-agent.

Есть возможность настроить автозапуск при входе в систему:

Get-Service -Name ssh-agent | Set-Service -StartupType Automatic

Или же запуск вручную по необходимости:

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

Определить текущее состояние настройки запуска:

Get-Service ssh-agent | Select StartType

Проверка текущего состояния:

Генерация ключей

Ключи создаются одной командой:

Пример создания ключа с указанным алгоритмом и своим комментарием:

ssh-keygen -t ed25519 -C "MyGitHubProfile"

Утилита ssh-keygen спросит у вас где сохранить ключи и нужно ли задавать пароль для доступа к ним. Если вы используете ключи для тренировки, то пароль будет отнимать время просто так и задавать его не стоит, но если вы занимаетесь коммерческой разработкой, то пароли крайне желательны. Так надежнее.

После успешной генерации ключей добавьте приватный ключ в ssh-agent:

ssh-add ~.sshid_ed25519

Просмотреть список ключей в SSH-AGENT:

Удалить все ключи из SSH-AGENT:

Если путь до приватного ключа введен правильно, то появится сообщение «Identity added». Ваша система теперь полностью готова для работы с удаленными серверами по SSH.

Что удаленный сервер мог вас опознать, необходимо отправить ему публичный ключ. Ваш публичный ключ должен быть сохранен в файле authorized_keys на удаленном сервере (по умолчанию он располагается в директории пользователя — ~/.ssh/authorized_keys). Ваш публичный ключ обычно расположен около приватного, вот тут: «~.sshid_ed25519.pub». Только не перепутайте, приватный ключ остается у вас, а публичный вы отдаете в сторонние сервисы.

Символ ~ означает директорию текущего пользователя. При желании вы можете указывать полные пути, т.е. вместо «~.sshid_ed25519.pub» вполне подойдет «C:Usersusername.sshid_ed25519.pub».

Что еще стоит знать о SSH?

Схема работы

Если вы ранее не имели дело с SSH, то все это работает примерно так. Вы генерируете два ключа, первый — секретный (он остается только у вас, например, id_ed25519), второй — открытый (например, id_ed25519.pub), его можно передавать кому угодно. Чтобы подключаться по SSH к удаленным серверам, необходимо свой публичный ключ записать на SSH сервер в файл authorized_keys, по нему сервер опознает вас по ключу при попытке соединения. Публичный и приватный (секретный) ключи связаны между собой. Подключиться к публичному ключу лежащему на сервере сможет только владелец связанного с ним приватного (секретного) ключа.

Доступные алгоритмы шифрования

Для создания ключей можно использовать различные алгоритмы шифрования. Вкратце рассмотрим самые популярные варианты и примеры их использования.

dsa — устарел и использовать его не стоит.

ecdsa — надежный алгоритм с возможностью указывать размер ключа в битах (256, 384 и 521), неплохой выбор. Пример:

ssh-keygen -t ecdsa -b 256
ssh-keygen -t ecdsa -b 384
ssh-keygen -t ecdsa -b 521

rsa — один из самых популярных алгоритмов шифрования, хороший выбор. Желательно указывать длинные ключи шифрования от 2048 бит.

ssh-keygen -t rsa -b 256
ssh-keygen -t rsa -b 512
ssh-keygen -t rsa -b 1024
ssh-keygen -t rsa -b 2048
ssh-keygen -t rsa -b 4096

ed25519 — новый, надежный и быстрый алгоритм шифрования. Если ваша система его поддерживает, то это лучший выбор.

Справка

Полезные ссылки

  • Работа с SSH в Windows 10 и Linux. Генерация ключей — YouTube;
  • Установка OpenSSH;
  • Управление ключами OpenSSH — docs.microsoft.com/ru-ru/windows-server/administration/openssh/openssh_keymanagement;
  • Ошибка: «Запуск ssh-агента на Windows 10 завершается неудачно…»;
  • Настройка SSH аутентификации по ключам в Windows 10 / 2019;
  • Пример тестового сервера (Docker);
  • Generating a new SSH key and adding it to the ssh-agent.

Introduction

SSH stands for Secure Shell and is a method used to establish a secure connection between two computers.

SSH works by authenticating based on a key pair, with a private key being on a remote server and the corresponding public key on a local machine. When the keys match, access is granted to the remote user.

This guide will show you how to generate an SSH key pair in Windows 10 using OpenSSH or PuTTY.

tutorial on How to generate SSH keys in OpenSSH and putty for Windows 10

Prerequisites

  • A system running Windows 10
  • A user account with administrative privileges
  • Access to the command prompt
  • A web browser (optional, to download PuTTY)

Generate an SSH key in Windows 10 with OpenSSH Client

Step 1: Verify if OpenSSH Client is Installed

First, check to see if you have the OpenSSH client installed:

1. Open the Settings panel, then click Apps.

2. Under the Apps and Features heading, click Optional Features.

screenshot of Windows Optional Features

3. Scroll down the list to see if OpenSSH Client is listed.

  • If it’s not, click the plus-sign next to Add a feature.
  • Scroll through the list to find and select OpenSSH Client.
  • Finally, click Install.
How to find OpenSSH Client in the Windows optional features list

Step 2: Open Command Prompt

1. Press the Windows key.

2. Type cmd.

3. Under Best Match, right-click Command Prompt.

4. Click Run as Administrator.

Image of how to run the Windows Command Prompt as an Admin user.

5. If prompted, click Yes in the Do you want to allow this app to make changes to your device? pop-up.

Step 3: Use OpenSSH to Generate an SSH Key Pair

1. In the command prompt, type the following:

ssh-keygen
OpenSSH command tgenerates an SSH key in Windows

2. By default, the system will save the keys to C:Usersyour_username/.ssh/id_rsa. You can use the default name, or you can choose more descriptive names. This can help distinguish between keys, if you are using multiple key pairs. To stick to the default option, press Enter.

Note: If a file with the same name already exists, you will be asked whether you want to overwrite the file.

3. You’ll be asked to enter a passphrase. Hit Enter to skip this step.

4. The system will generate the key pair, and display the key fingerprint and a randomart image.

5. Open your file browser.

6. Navigate to C:Usersyour_username/.ssh.

7. You should see two files. The identification is saved in the id_rsa file and the public key is labeled id_rsa.pub. This is your SSH key pair.

SSH key pair and randomart image generated with the SSH keys on Windows 10.

Note: Normally, the public key is identified with the .pub extension. You can use Notepad to see the contents of both the private and public key.

Generate SSH Keys Using PuTTY

Before OpenSSH was included with Windows, the PuTTY tool was the gold standard for generating SSH keys.

Step 1: Install PuTTY

1. Browse to the developer’s page, and download the installer for PuTTY:

  • https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

2. Double-click the downloaded file and follow the installation wizard to finish the installation.

  • On the initial dialog of the installation wizard, click Next.
  • Select the destination folder. Use the default installation configuration unless you have a specific need to change it. Click Next to move on to the next screen.
Select destination folder for the PuTTY installation
  • Select PuTTY product features to be installed. Stick to the defaults if you do not have any specific needs. Click Next to move on to the next screen.
Putty product features selected
  • Once the process completes, click Finish to exit the installation wizard.

Step 2: Run the PuTTY SSH Key Generator

1. Press the Windows key.

2. Type puttygen.

3. Under Best Match, right-click PuTTYgen.

4. Click Run as administrator.

5. If prompted, click Yes on the Do you want to allow this app to make changes to your device? pop-up.

Step 3: Use PuTTY to Create a Pair of SSH Keys

The process outlined below will generate RSA keys, a classic and widely-used type of encryption algorithm. The PuTTY keygen tool offers several other algorithms – DSA, ECDSA, Ed25519, and SSH-1 (RSA).

If you require a different encryption algorithm, select the desired option under the Parameters heading before generating the key pair.

1. In the PuTTY Key Generator window, click Generate.

2. Move the cursor around in the gray box to fill up the green bar.

Generating an SSH key pair in Putty.

3. Save the public key:

  • Click the button labeled Save public key.
  • Choose a location to save the key.
  • Give the key a name (e.g., putty_key.pub)
Editing advanced SSH keys options in PuTTY.

4. Save the private key:

  • Click the Conversions menu at the top.
  • Click Export OpenSSH key.
  • You’ll be asked if you want to save a key without a passphrase. Click Yes.
  • Choose a location to save the key (usually the same folder as the public key).
  • Give the key a name (e.g., putty_key).

Using Your SSH Keys

To use your SSH keys, copy your public SSH key to the system you want to connect to. Use your private SSH key on your own system. Your private key will match up with the public key, and grant access.

For further details and troubleshooting, see our guide on paswordless SSH login using SSH keys.

Conclusion

This article has provided two methods of generating SSH key pairs on a Windows 10 system. Use the SSH keys to connect to a remote system without the use of passwords.

Введение

Использование SSH-ключей — простой и надежный способ обеспечения безопасности соединения с сервером.  В отличие от пароля, взломать SSH-ключ практически невозможно. Сгенерировать SSH-ключ очень просто.

SSH-ключ для Linux/MacOS

Откройте терминал и выполните команду:

$ ssh-keygen -t rsa

На консоль будет выведен следующий диалог:

Enter file in which to save the key (/home/user/.ssh/id_rsa):

Нажмите на клавишу Enter.  Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:

Enter passphrase (empty for no passphrase):

Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.

После этого ключ будет создан, а на консоль будет выведено следующее сообщение:

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:
476:b2:a8:7f:08:b4:c0:af:81:25:7e:21:48:01:0e:98 user@localhost

The key's randomart image is:

+--[ RSA 2048]----+

|+.o.             |

|ooE              |

|oo               |

|o.+..            |

|.+.+..  S .      |

|....+  o +       |

|  .o ....        |

|  .  .. .        |

|    ....         |

+-----------------+

Далее выполните в терминале команду:

$ cat ~/.ssh/id_rsa.pub

На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле:

Нажмите на кнопку «Добавить».

Добавив ключ, выполните в терминале команду:

$ ssh root@[IP-адрес сервера]

После этого соединение с сервером будет установлено. Вводить пароль при этом не потребуется.

SSH-ключ для Windows

В OC Windows подключение к удаленным серверам по SSH возможно, например, с помощью клиента Putty. Скачать его можно здесь (ссылка взята с официального сайта). Putty не требует установки — чтобы начать с ним работать, достаточно просто распаковать скачанный архив.

По завершении распаковки запустите файл puttygen.exe.

Выберите тип ключа SSH-2 RSA и длину 2048 бит, а затем нажмите на кнопку Generate:

Во время генерации водите курсором в пустой области окна (это нужно для создания псевдослучайности):

Сохраните сгенерированную пару ключей на локальной машине (кнопки Save public key и Save private key).

Скопируйте сгененированный ключ и вставьте его в соответствующее поле.

Заключение

В этой инструкции мы рассмотрели, как создать шифрованный протокол для связи с сервером: сгенерировали SSH-ключ для Linux/MacOS и Windows. Теперь вы можете входить в систему без пароля учетной записи.

Экран ноутбука, показывающий SSH-соединениеЭни Сетиовати / Shutterstock.com

Если часть вашей жизни включает в себя вход на удаленный сервер, будь то самостоятельный blog, установка Nextcloud или отправка последних изменений на GitHub, вам понадобятся ключи SSH. В Windows 10 и 11 мы избалованы выбором, когда дело доходит до создания новых ключей.

Вот как создать все ключи SSH, которые вам когда-либо понадобятся, с помощью трех разных методов. Мы покажем вам, как сгенерировать исходный набор ключей, а также дополнительные, если вы хотите создать разные ключи для нескольких сайтов.

Вариант 1. Создание ключей в командной строке

В Windows 10 был встроенный клиент OpenSSH с момента обновления за апрель 2018 года. Windows 11 также имеет встроенную функцию.

Использовать это откройте командную строку Windows, нажав клавишу Windows и набрав «cmd».

Совет: Если вы часто используете командную строку, мы настоятельно рекомендуем установить Терминал Windows из Магазина Windows (устанавливается в Windows 11 по умолчанию). Это программа с вкладками, которая может запускать командную строку, PowerShell и подсистему Windows для Linux в одном окне. Он также имеет забавные функции, такие как установка фоновых изображений.

Независимо от того, используете ли вы командную строку или терминал Windows, введите ssh-keygen и нажмите Enter. Это автоматически сгенерирует ключи SSH. В наших тестах в Windows 11 он создал 2048-битный ключ RSA. Если вы хотите использовать другой алгоритм —GitHub рекомендует Ed25519, например, тогда вы должны ввести ssh-keygen -t ed25519.

Окно Терминала Windows, показывающее командную строку с командой ssh-keygen

После того, как вы введете свою команду, нажмите Enter, а затем вам будет предложено дать вашему ключу имя и сохранить его в определенном месте. Если вы используете значения по умолчанию, он сохранит ваши ключи в C: User.[YourUserName].ssh — предполагается, что диск C — это место, где хранится ваша учетная запись.

Командная строка Windows 11 с указанием места для сохранения ключей SSH.

Далее вас попросят ввести кодовую фразу. Мы настоятельно рекомендуем вам сделать это, чтобы сохранить свой ключ в безопасности. Если вы беспокоитесь о том, что забудете свой пароль, ознакомьтесь с этим обзором лучшие менеджеры паролей на Review Geek. Если вам действительно не нужна кодовая фраза, просто нажмите Enter.

Командная строка Windows 11 просит создать пароль для вновь созданного ключа SSH.

Вот и все, что ваши ключи созданы, сохранены и готовы к использованию. Вы увидите, что у вас есть два файла в папке «.ssh»: «id_rsa» без расширения файла и «id_rsa.pub». Последний — это ключ, который вы загружаете на серверы для аутентификации, а первый — это закрытый ключ, которым вы не делитесь с другими.

Окно командной строки, показывающее все команды для создания ключей SSH

Примечание. Если вы не видите свою папку «.ssh» в проводнике, ознакомьтесь с нашим руководством о том, как отображать скрытые файлы и папки в Windows.

Если вы хотите создать несколько ключей для разных сайтов, это тоже несложно. Скажем, например, вы хотите использовать ключи по умолчанию, которые мы только что сгенерировали для вашего сервера в Digital Ocean, и вы хотите создать еще один набор ключей для GitHub. Вы будете следовать тому же процессу, что и выше, но когда придет время сохранять ключ, вы просто дадите ему другое имя, например «id_rsa_github» или что-то подобное. Вы можете делать это сколько угодно раз. Просто помните, что чем больше у вас ключей, тем большим количеством ключей вам придется управлять. При переходе на новый компьютер вам необходимо переместить эти ключи вместе с другими файлами, иначе вы рискуете потерять доступ к своим серверам и учетным записям, по крайней мере, временно.

Вариант 2: создание ключей в WSL

Командная строка WSL Ubuntu показывает практически тот же процесс создания ключа SSH, что и командная строка Windows.

Если ты WSL пользователь, вы можете использовать аналогичный метод с установкой WSL. Фактически, это в основном то же самое, что и в версии для командной строки. Зачем вам это нужно? Если вы в основном живете в Linux из-за обязанностей командной строки, тогда имеет смысл хранить свои ключи в WSL.

Откройте Терминал Windows или встроенную командную строку Ubuntu (при условии, что вы установили Ubuntu Linux). Тогда это очень похоже на Windows. В отличие от Windows, лучше указать, нужен ли вам ключ RSA или что-то вроде Ed25519.

Допустим, вы хотите создать ключ RSA-4096. Вы должны ввести следующую команду:

ssh-keygen -t rsa -b 4096

Если вам нужен Ed25519, рекомендуется следующий способ:

ssh-keygen -t ed25519 -C «ваш@email.address»

Рекомендуется добавить свой адрес электронной почты в качестве идентификатора, хотя в Windows это делать не обязательно, поскольку версия Microsoft автоматически использует для этого ваше имя пользователя и имя вашего компьютера.

Опять же, чтобы сгенерировать несколько ключей для разных сайтов, просто отметьте что-то вроде «_github» в конце имени файла.

Вариант 3. Создание ключей с помощью PuTTY

В течение многих лет старая школа Программа PuTTY была популярным способом связи с сервером в Windows. Если у вас уже есть эта программа в вашей системе, она также предлагает метод для создания ключей SSH.

PuTTY поставляется с рядом вспомогательных программ, одна из которых называется Генератором ключей PuTTY. Чтобы открыть его, либо найдите его, нажав клавишу Windows и набрав «puttygen», либо выполните поиск в меню «Пуск».

puTTY и его вспомогательные программы, перечисленные в меню «Пуск» Windows 11.

Когда он откроется, в нижней части окна вы увидите различные типы ключей, которые нужно сгенерировать. Если вы не уверены, что использовать, выберите «RSA», а затем в поле ввода с надписью «Число битов в сгенерированном ключе» введите «4096». Другой альтернативой является выбор «EdDSA», а затем в раскрывающемся меню, которое появляется под ним, убедитесь, что выбрано «Ed25519 (255 бит)».

Генератор ключей Putty с красными стрелками, указывающими на параметры создания ключей в нижней части окна.

Теперь все, что вам нужно сделать, это нажать «Создать», и PuTTY начнет работать. Это не должно занять слишком много времени в зависимости от мощности вашей системы, и PuTTy попросит вас переместить курсор внутри окна, чтобы создать немного больше случайности во время генерации ключа.

Как только это будет сделано, нажмите «Сохранить открытый ключ», чтобы сохранить свой открытый ключ, и сохраните его там, где хотите, с именем «id_rsa.pub» или «id_ed25519.pub», в зависимости от того, выбрали ли вы RSA или Ed25519 на предыдущем шаге.

Нажмите кнопку «Сохранить открытый ключ» в PuTTY.

Затем, чтобы получить ваш закрытый ключ, потребуется дополнительный шаг. По умолчанию PuTTY генерирует ключи PPK для использования с клиентом PuTTy. Однако, если вам нужен OpenSSH, в верхней части окна выберите «Конверсии»> «Экспортировать ключ OpenSSH», а затем сохраните файл как «id_rsa» или «id_ed25519» без окончания файла.

Выберите опцию экспорта ключа SSH в Putty.

Сгенерировать ключи SSH действительно просто, какой бы метод вы ни выбрали. Мы бы рекомендовали использовать опцию командной строки Windows, если у вас еще не установлен PuTTY, или если вы предпочитаете Linux и не понимаете эту систему.

Понравилась статья? Поделить с друзьями:
  • Ssh key from windows to linux
  • Ssh agent windows 10 что это
  • Ssh could not resolve hostname windows
  • Sserifer fon скачать для windows 10
  • Ssh copy file from linux to windows