Как создать SSH ключи на Windows?
Создание ключа
Для создания ключа в ОС Windows мы будем использовать утилиту PuTTYgen.
Она устанавливается как часть стандартной установки пакета PuTTY.msi
Нет необходимости в отдельной загрузке PuTTYgen
Загрузите установочный пакет PuTTY https://putty.org и установите весь пакет.
Перейдите в меню «Пуск» —> «Все программы» —> «PuTTYgen«
Чтобы создать новую пару ключей, выберите тип ключа для генерации из нижней части экрана
(с использованием SSH-2 RSA с размером ключа 2048 бит подходит для большинства людей, другой хорошей общеизвестной альтернативой является ECDSA).
Затем нажмите «Generate» и начните перемещать курсор в окне на пустом поле.
Putty использует движения мыши для генерации случайных значений.
Точный способ перемещения мыши не может быть предсказан внешним злоумышленником.
Вам потребуется подвигать мышью в течение некоторого времени, в зависимости от размера вашего ключа. Когда вы ее перемещаете, зеленый индикатор прогресса должен продвигаться вперед.
Как только индикатор выполнения будет заполнен, произойдет фактическое вычисление генерации ключа.
По завершении открытый ключ (public key) должен появиться в окне.
Теперь вы можете указать фразу пароль для ключа (можно не указывать).
Вам необходимо сохранить хотя бы закрытый ключ (privat key), нажав «Save private key«.
К серверам OpenSSH доступ к учетной записи предоставляется путем добавления открытого ключа (public key) в файл
/.ssh /authorized_keys на сервере.
Установка ключа
Чтобы установить открытый ключ (public key), подключитесь к серверу, отредактируйте файл authorized_keys Вашим любимым редактором и вырежьте и вставьте вывод открытого ключа в файл authorized_keys. Сохраните файл.
Теперь осталось добавить наш приватный ключ (Privat key) в ssh-agent’a «Pageant» («Пуск» —> «PuTTY» —> «Pageant«).
Pageant приложение, входящее в дистрибутив PuTTY.
Это программное обеспечение используется для хранения приватных ключей в памяти в раскодированном виде, которые используются при запросе удаленного сервера.
Для того, чтобы добавить созданный ранее приватный ключ, требуется запустить Pageant, вызывать его из системного трея правой кнопкой мыши и в появившемся меню выбрать пункт «Add key«.
После того, как ключ выбран, может появится окно ввода пароля, который был добавлен при создании ключа для увеличения безопасности.
Далее, все загруженные ключи доступны в списке ключей (пункт меню View Keys):
Теперь логинимся в PuTTY.
Если Вы сделали всё правильно, то увидите сообщение:
Как использовать ключи SSH с Windows в Azure How to use SSH keys with Windows on Azure
Эта статья предназначена для пользователей Windows, желающих создать и использовать ключи Secure Shell (SSH) для подключения к виртуальным машинам Linux в Azure. This article is for Windows users who want to create and use secure shell (SSH) keys to connect to Linux virtual machines (VMs) in Azure. Вы также можете создать и сохранить ключи SSH в портал Azure, которые будут использоваться при создании виртуальных машин на портале. You can also generate and store SSH keys in the Azure portal to use when creating VMs in the portal.
Сведения о том, как использовать ключи SSH из клиента Linux или macOS, см. в разделе Краткое руководство. To use SSH keys from a Linux or macOS client, see the quick. Более подробный обзор SSH см. в статье Создание ключей SSH и управление ими для проверки подлинности на виртуальной машине Linux в Azure. For a more detailed overview of SSH, see Detailed steps: Create and manage SSH keys for authentication to a Linux VM in Azure.
Общие сведения о SSH и ключах Overview of SSH and keys
SSH — это протокол зашифрованного соединения, позволяющий выполнять безопасные входы по незащищенным соединениям. SSH is an encrypted connection protocol that allows secure sign-ins over unsecured connections. SSH — это протокол подключения по умолчанию для виртуальных машин Linux, размещенных в Azure. SSH is the default connection protocol for Linux VMs hosted in Azure. Хотя SSH предоставляет зашифрованное соединение, использование паролей с SSH по-прежнему оставляет виртуальную машину уязвимой для атак методом подбора. Although SSH itself provides an encrypted connection, using passwords with SSH still leaves the VM vulnerable to brute-force attacks. Мы рекомендуем подключаться к виртуальной машине по протоколу SSH с помощью пары открытого и закрытого ключей, также называемых ключами SSH. We recommend connecting to a VM over SSH using a public-private key pair, also known as SSH keys.
Пара открытого и закрытого ключей аналогична блокировке передней дверцы. The public-private key pair is like the lock on your front door. Блокировка предоставляется общедоступной, любой пользователь с правом ключом может открыть дверцу. The lock is exposed to the public, anyone with the right key can open the door. Ключ является частными предоставляется только доверенным людям, так как его можно использовать для разблокировки дверцы. The key is private, and only given to people you trust because it can be used to unlock the door.
Открытый ключ размещается на виртуальной машине Linux при создании виртуальной машины. The public key is placed on your Linux VM when you create the VM.
Закрытый ключ остается в локальной системе. The private key remains on your local system. Его нужно защищать Protect this private key. и нельзя никому предоставлять. Do not share it.
При подключении к виртуальной машине Linux виртуальная машина проверяет SSH-клиент, чтобы убедиться, что он имеет правильный закрытый ключ. When you connect to your Linux VM, the VM tests the SSH client to make sure it has the correct private key. Если у клиента есть закрытый ключ, он получает доступ к виртуальной машине. If the client has the private key, it’s granted access to the VM.
В зависимости от политик безопасности Организации можно повторно использовать одну пару ключей для доступа к нескольким виртуальным машинам и службам Azure. Depending on your organization’s security policies, you can reuse a single key pair to access multiple Azure VMs and services. Для каждой виртуальной машины не требуется отдельная пара ключей. You do not need a separate pair of keys for each VM.
Открытый ключ можно использовать совместно с любым пользователем, но только вы (или ваша локальная инфраструктура безопасности) должны иметь доступ к вашему закрытому ключу. Your public key can be shared with anyone, but only you (or your local security infrastructure) should have access to your private key.
Поддерживаемые форматы ключей SSH Supported SSH key formats
В настоящее время платформа Azure поддерживает пары из открытого и закрытого ключей SSH-2 RSA длиной не менее 2048 битов. Azure currently supports SSH protocol 2 (SSH-2) RSA public-private key pairs with a minimum length of 2048 bits. Другие форматы ключей, например ED25519 и ECDSA, не поддерживаются. Other key formats such as ED25519 and ECDSA are not supported.
SSH-клиенты SSH clients
В последние версии Windows 10 входят клиентские команды OpenSSH для создания и использования ключей SSH и создания SSH-подключений из PowerShell или командной строки. Recent versions of Windows 10 include OpenSSH client commands to create and use SSH keys and make SSH connections from PowerShell or a command prompt. Это самый простой способ создать SSH-подключение к виртуальной машине Linux с компьютера Windows. This is the easiest way to create an SSH connection to your Linux VM, from a Windows computer.
Можно также использовать Bash в Azure Cloud Shell для подключения к виртуальной машине. You can also use Bash in the Azure Cloud Shell to connect to your VM. Cloud Shell можно использовать в веб-браузере, портал Azureили в качестве терминала в Visual Studio Code с помощью расширения учетной записи Azure. You can use Cloud Shell in a web browser, from the Azure portal, or as a terminal in Visual Studio Code using the Azure Account extension.
Вы также можете установить подсистему Windows для Linux , чтобы подключиться к виртуальной машине по протоколу SSH и использовать другие собственные средства Linux в оболочке bash. You can also install the Windows Subsystem for Linux to connect to your VM over SSH and use other native Linux tools within a Bash shell.
Создание пары ключей SSH Create an SSH key pair
Создайте пару ключей SSH с помощью ssh-keygen команды. Create an SSH key pair using the ssh-keygen command. Введите имя файла или используйте значение по умолчанию, показанное в скобках (например, C:\Users\username/.ssh/id_rsa ). Enter a filename, or use the default shown in parenthesis (for example C:\Users\username/.ssh/id_rsa ). Введите парольную фразу для файла или оставьте пустым парольную фразу, если вы не хотите использовать парольную фразу. Enter a passphrase for the file, or leave the passphrase blank if you do not want to use a passphrase.
Создание виртуальной машины с помощью ключа Create a VM using your key
Чтобы создать виртуальную машину Linux, использующую ключи SSH для проверки подлинности, укажите открытый ключ SSH при создании виртуальной машины. To create a Linux VM that uses SSH keys for authentication, provide your SSH public key when creating the VM.
С помощью Azure CLI вы указываете путь и имя файла для открытого ключа с помощью az vm create и —ssh-key-value параметра. Using the Azure CLI, you specify the path and filename for the public key using az vm create and the —ssh-key-value parameter.
В PowerShell используйте New-AzVM и добавьте ключ SSH в конфигурацию виртуальной машины с помощью. With PowerShell, use New-AzVM and add the SSH key to the VM configuration using`. Пример см. в разделе Краткое руководство. Создание виртуальной машины Linux в Azure с помощью PowerShell. For an example, see Quickstart: Create a Linux virtual machine in Azure with PowerShell.
При выполнении большого количества развертываний с помощью портала может потребоваться передать открытый ключ в Azure, где его можно легко выбрать при создании виртуальной машины на портале. If you do a lot of deployments using the portal, you might want to upload your public key to Azure, where it can be easily selected when creating a VM from the portal. Дополнительные сведения см. в разделе Отправка ключа SSH. For more information, see Upload an SSH key.
Подключение к виртуальной машине Connect to your VM
С помощью открытого ключа, развернутого на виртуальной машине Azure, и закрытого ключа в локальной системе установите SSH-подключение к виртуальной машине, используя ее IP-адрес или DNS-имя. With the public key deployed on your Azure VM, and the private key on your local system, SSH to your VM using the IP address or DNS name of your VM. Замените azureuser и 10.111.12.123 в следующей команде на имя пользователя администратора, IP-адрес (или полное доменное имя) и путь к закрытому ключу: Replace azureuser and 10.111.12.123 in the following command with the administrator user name, the IP address (or fully qualified domain name), and the path to your private key:
Если вы настроили парольную фразу при создании пары ключей, введите парольную фразу при появлении запроса. If you configured a passphrase when you created your key pair, enter the passphrase when prompted.
Если виртуальная машина использует политику доступа JIT, запросите доступ, прежде чем подключиться к виртуальной машине. If the VM is using the just-in-time access policy, you need to request access before you can connect to the VM. Дополнительные сведения о политике JIT см. в статье Управление доступом к виртуальным машинам с помощью JIT-доступа. For more information about the just-in-time policy, see Manage virtual machine access using the just in time policy.
Дальнейшие действия Next steps
Сведения о ключах SSH в портал Azure см. в разделе Создание и хранение ключей SSH в портал Azure , которые используются при создании виртуальных машин на портале. For information about SSH keys in the Azure portal, see Generate and store SSH keys in the Azure portal to use when creating VMs in the portal.
Подробные инструкции, параметры и дополнительные примеры работы с ключами SSH приведены в статье Подробные инструкции: создание ключей SSH для аутентификации на виртуальной машине Linux в Azure и управление этими ключами. For detailed steps, options, and advanced examples of working with SSH keys, see Detailed steps to create SSH key pairs.
Для создания ключей SSH и установления SSH-подключений к виртуальным машинам Linux можно также использовать PowerShell в Azure Cloud Shell. You can also use PowerShell in Azure Cloud Shell to generate SSH keys and make SSH connections to Linux VMs. Ознакомьтесь с разделом Краткое руководство по использованию PowerShell в Azure Cloud Shell (предварительная версия). See the PowerShell quickstart.
Если при подключении к виртуальным машинам Linux по протоколу SSH возникают трудности, см. статью Troubleshoot SSH connections to an Azure Linux VM that fails, errors out, or is refused (Устранение неполадок с ошибками, сбоем или отклонением SSH-подключения к виртуальной машине Azure Linux). If you have difficulty using SSH to connect to your Linux VMs, see Troubleshoot SSH connections to an Azure Linux VM.
Настройка SSH аутентификации по ключам в Windows 10 / 2019
В этой статье мы настроим SSH аутентификацию в Windows по RSA-ключам для безопасного доступа к удаленным системам. Мы покажем, как сгенерировать RSA-ключи (сертификаты) в Windows и настроить сервер OpenSSH в Windows 10/Windows Server 2019 для авторизации по ключам (без паролей).
Аутентификация по в SSH ключам широко используется в мире Linux, а в Windows этот функционал появился относительно недавно. Идея заключается в том, что на SSH сервере добавляется открытый ключ клиента и при подключении сервер проверяет наличие соответствующего закрытого ключа у клиента.
Генерация RSA ключей на клиенте Windows
На клиентском, компьютере, с которого вы будет подключаетесь к удалённому серверу Windows с OpenSSH, вам нужно сгенерировать пару RSA-ключей (открытый и закрытый). Закрытый ключ хранится на клиенте (не отдавайте его никому!), а открытый ключ помещается на SSH сервер в файл authorized_keys. Чтобы на клиенте Windows сгенерировать RSA ключи, вы должны установить клиент OpenSSH.
В Windows 10 1809 и Windows Server 2019 клиент OpenSSH устанавливается как отдельный встроенный компонент:
Add-WindowsCapability -Online -Name OpenSSH.Client
Запустите обычную (непривилегированную сессию PowerShell) и сгенерируйте пару RSA 2048 ключей с помощью команды:
Утилита попросит вас указать пароль для защиты закрытого ключа. Если вы укажете пароль, то каждый раз при использовании этого ключа для SSH авторизации, вы должны будете вводить этот пароль. Я не стал указывать пароль для ключа (не рекомендуется).
Утилита ssh-keygen создаст каталог .ssh в профиле текущего пользователя Windows (C:\Users\your_username) и поместит в него 2 файла:
- id_rsa – закрытый ключ
- id_rsa.pub – публичный ключ
После того, как ключи созданы, вы можете добавить закрытый ключ в службу SSH Agent, которая позволяет удобно управлять закрытыми ключами и использовать их для аутентификации.
SSH Agent может хранить закрытые ключи и предоставлять их в контексте безопасности текущего пользователя. Запустите службу ssh-agent и настройте автоматический запуск с помощью PowerShell команд управления службами:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
Добавьте ваш закрытый ключ в базу ssh-agent:
Настройка OpenSSH в Windows для авторизации по ключам
Теперь открытый ключ, который вы сгенерировали на клиенте, нужно скопировать на ваш SSH сервер (в этом примере это удаленный компьютер с Windows 10 1903 и настроенной службой OpenSSH).
Скопируйте файл id_rsa.pub в каталог .ssh профиля пользователя, под которым вы будете подключаться к SSH серверу. Например, у меня в Windows 10 создан пользователь admin, значит я должен скопировать ключ в файл C:\Users\admin\.ssh\authorized_keys.
Можно скопировать ключ на SSH сервер с клиента с помощью SCP:
scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.90:c:\users\admin\.ssh\authorized_keys
Теперь вы можете подключиться к SSH серверу без ввода пароля пользователя. А если вы не задали пароль (passphrase) для закрытого ключа, вы сразу автоматически подключитесь к вашему удаленному серверу Windows.
Для подключения через SSH к удаленному хосту используется следующая команда:
ssh (username)@(имя или IP адрес SSH сервера)
Это означает, что вы хотите подключиться к удаленному SSH серверу с адресом 192.168.1.90 под учетной записью admin. Служба SSH Agent автоматически попытается использовать для авторизации сохраненный ранее закрытый ключ.
ssh admin@192.168.1.90 -i «C:\Users\youruser\.ssh\id_rsa»
Если вы не смогли подключиться к вашему SSH серверу по RSA ключу, и у вас все равно запрашивается пароль, скорее всего пользователь, под которым вы подключаетесь, входит в группу локальных администраторов сервера (SID группы S-1-5-32-544). Об этом далее.
Вход по SSH ключу для локальных администраторов Windows
В OpenSSH используются особые настройки доступа по ключам для пользователей с правами локального администратора Windows.
В первую очередь, вместо ключа authorized_keys в профиле пользователя нужно использовать файл с ключами C:\ProgramData\ssh\administrators_authorized_keys. Вам нужно добавить ваш ключ в этот текстовый файл (в целях безопасности права на этот файл должны быть только у группы Administrators и SYSTEM).
Чтобы использовать ключ authorized_keys из профиля пользователя, и не переносить данные открытого ключа в файл administrators_authorized_keys, вы можете закомментировать строку в файле конфигурации OpenSSH («C:\ProgramData\ssh\sshd_config«).
Дополнительно в файле sshd_config вы можете разрешить вход по RSA ключам:
И запретить доступ по паролю:
После сохранения изменений в файле sshd_config не забудьте перезапустить службу sshd.
Еще один небольшой нюанс. В старых версиях OpenSSH нужно было предоставить права службе NT Service\sshd на чтение ключа authorized_keys.
Для этого нужно выполнить одно из следующих действий:
- Установить модуль OpenSSHUtils: Install-Module -Force OpenSSHUtils -Scope AllUsers . Для изменения прав на файл нужно выполнить команду: Repair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys ;
- Измените NTFS права на файл с помощью модуля NTFSSecurity или icacls;
- Либо вы можете в конфигурационном файле sshd_config отключить режим StrictModes. По умолчанию этот режим включен и запрещает аутентификацию по ключам, если закрытый и открытый ключ недостаточно защищены. Раскомментируйте строку #StrictModes yes , измените на StrictModes no .
Итак, вы настроили SSH аутентификацию в Windows по открытому RSA-ключу (сертификату). Теперь вы можете использовать такой способ аутентификации для безопасного доступа к удаленным северам, автоматического поднятия проброса портов в SSH туннеле, запуска скриптов и других задачах автоматизации.
Спасибо! Первая рабочая статья -_ stackoverflow.com уже весь на эту тему перечитал).
debug1: Found key in C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/known_hosts:9
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug2: key: C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_rsa (000002372A7B17D0), agent
debug2: key: C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_dsa (0000000000000000)
debug2: key: C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_ecdsa (0000000000000000)
debug2: key: C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_ed25519 (0000000000000000)
debug2: key: C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_xmss (0000000000000000)
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:5U76PQzmZJ7xce9TDvyt1P/sqNCX/GHOZSLk3TR3x1o C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: C:\\Users\\\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214/.ssh/id_dsa
Можете подсказать что не так?
Какую команду используете для SSH подключения? Ключ добавлен в ssh-agent?
Попробуйте указать путь к вашему файлу с закрытым ключом вручную:
ssh root@192.168.1.90 -i «C:\Users\user1\.ssh\id_rsa»
При генерации ключа не нашел файлы в профиле пользователя. Они были в «C:\Windows\System32»
Скорее всего вы запускали cmd\powershell.exe в режиме administrator, поэтому путь по-умолчанию был c:\windows\system32
А как это работает, если сервер на Linux, а клиент на Windows?
Да, все аналогично. Только в linux другое место хранения ключей (в зависимости от дистрибутива)













