Подключение к серверу через SSH, по приватному ключу - это хороший способ обезопасить подключение к Вашему серверу, и от лишнего ввода логина и пароля.
Аутентификация с публичным ключом SSH основана на криптографических алгоритмах, которые генерируют пару отдельных ключей, приватный и публичный. Приватный ключ, который используете для подключения к удаленному серверу, вы храните на компьютере. Но публичный ключ Вы можете передать кому угодно, не ставя под угрозу приватный.
К примеру Вы уже пробрели сервер из личного кабинета. Как это сделать описано в данной статье. Далее в личном кабинете скопируйте данные доступа из Инструкции.

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

В поле Host Name (or IP address) вводим IP Вашего сервера. В поле Port вводим 22.
Для генерации пары ключей, есть утилита ssh-keygen. По умолчанию она уже установлена, Она создает пару 2048-битных ключей RSA, которые нам подходят.
От имени пользователя, для которого нужно создать ключи выполнить команду (в данном случае это root):
ssh-keygen
На задаваемые вопросы в процессе генерации, можете просто нажать Enter. Так как наша цель просто сгенерировать ключ.
И получаем приблизительную картину:

После этого, содержимое файла id_rsa.pub , следующей командой, помещаем в файл ~/.ssh/authorized_keys:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Для безопасности ставим нужные права:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Теперь, что бы авторизоваться по созданному ключу, необходимо включить аутентификацию по ключу в файле /etc/ssh/sshd_config. Для этого отредактируем его.
vim /etc/ssh/sshd_config
Находим строку PubkeyAuthentication , расскоментируем ее если она закомментирована, и приводим ее к виду:
PubkeyAuthentication yes
Сохраняем изменения.
После чего перезапускаем службу:
service sshd reload
Теперь выводим в консоль ключ, что бы скопировать себе на ПК.
cat ~/.ssh/id_rsa

Копируем от начала:
-----BEGIN OPENSSH PRIVATE KEY-----
До конца:
-----END OPENSSH PRIVATE KEY-----
Добавляем в PuttyGen. Данная программа установилась вместе с Putty.

После этого сохраняем публичный и приватный ключи.

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

После этого возвращаемся в категорию Session, в поле Host Name (or IP adress) вводим IP Вашего сервера. В поле Port вводим 22. В Поле Saved Sessions, введите любое имя, и нажмите Save.
Теперь для подключения по ключу, выберите свой сервер из списка Saved Sessions, и нажмите Load и Open.

Теперь Вы можете подключаться данным способом не вводя пароль, и при этом защитив свое подключение.
В следующей статье мы еще обезопасим наш сервер и подключение к нему, отключив авторизацию по паролю, и сменив стандартный порт 22 на не стандартный.
Подключение к Windows-серверу по SSH-ключу
Выше мы рассмотрели подключение по SSH ключу к серверу на Linux подобной ОС. Теперь разберем как это происходит, когда вы хотите подключится к серверу на Windows ОС по SSH ключу.
Сперва вам нужно подготовить ваш Windows server к этому. Обратите внимание: описанный ниже способ актуален для Windows Server 2022. В других версиях Windows включение и настройка SSH могут отличаться. Если вы используете другую версию операционной системы, рекомендуем ознакомиться с отдельными инструкциями, где подробно разобраны соответствующие способы включения SSH.
- Как поднять OpenSSH на Windows Server 2012
- Как поднять OpenSSH на Windows Server 2016
- Как поднять OpenSSH на Windows Server 2019
Команды из этого раздела нужно выполнять на Windows Server, к которому вы хотите подключаться по SSH. Например, сначала подключитесь к серверу через RDP, затем откройте PowerShell от имени администратора. PowerShell - это командная консоль Windows, в которой можно выполнять административные команды.
Чтобы установить службу OpenSSH Server, выполните команду:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0После успешной установки запустите службу sshd:
Start-Service sshdЗатем разрешите службе запускаться автоматически после перезагрузки сервера:
Set-Service -Name sshd -StartupType AutomaticКроме этого, нужно создать правило в фаерволе сервера для открытого 22 порта. Для этого используйте следующую комманду:
New-NetFirewallRule -Name sshd `
-DisplayName "OpenSSH Server" `
-Enabled True `
-Direction Inbound `
-Protocol TCP `
-Action Allow `
-LocalPort 22

Чтоб подключаться к Windows серверу, на вашем локальном Windows-ПК должна быть сгенерирована пара ключей: приватный и публичный. Следующие команды нужно выполнять уже на вашем локальном Windows-ПК, с которого вы будете подключаться к серверу. Откройте PowerShell и выполните:
ssh-keygen -t rsa -b 4096
После этого программа может задать несколько вопросов:
Enter file in which to save the key
Нажмите Enter, чтобы сохранить ключ в стандартную папку. Далее может появиться вопрос:
Enter passphrase (empty for no passphrase):
Passphrase - это секретная фраза для защиты приватного ключа. Можно ввести свою фразу или нажать Enter, чтобы оставить поле пустым.
Затем появится повторный вопрос:
Enter same passphrase again:Повторите секретную фразу или снова нажмите Enter, если оставили её пустой. Важно: при вводе passphrase символы могут не отображаться в PowerShell. Это нормально.

После создания у вас появятся новые файлы в директории C:\Users\USERNAME\.ssh\: id_rsa и id_rsa.pub
id_rsa - это приватный ключ. Его нельзя передавать другим людям.
id_rsa.pub - это публичный ключ. Именно его нужно добавить на сервер.
Командой ниже вы можете вывести в терминал публичный ключ, чтоб затем его скопировать:
type $env:USERPROFILE\.ssh\id_rsa.pubНиже на скриншоте ниже показан пример вывода публичного ключа, который Вам нужно скопировать. Пожалуйста, скопируйте этот ключ от начала до его конца. Там должна быть одна длинная строка, примерно такого вида:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... user@DESKTOP

После этого, необходимо добавить этот ключ на сервер в файл administrators_authorized_keys. В Windows Server этот файл обычно располагается по следующему пути:
C:\ProgramData\ssh\administrators_authorized_keys
Папка ProgramData может быть скрыта по умолчанию. Вам нужно включить опцию для демонстрации скрытых файлов и папок. На Windows 11 это делается следующим образом: войдите в проводник, затем обратитесь к кнопке “View”, откройте выпадающее меню по кнопке “Show” и включите опцию “Hidden items”:

Если у вас сервер на Windows 10, действий будет меньше: войдите в проводник, нажмите сверху на кнопку “View” и включите опцию “Hidden items”:

Если файл administrators_authorized_keys отсутствует - его необходимо создать вручную. Откройте PowerShell на сервере от имени администратора и выполните команду:
notepad C:\ProgramData\ssh\administrators_authorized_keys
Если Блокнот спросит, создать ли новый файл, нажмите “Да”. В открывшийся файл вставьте публичный ключ, который вы скопировали из id_rsa.pub на локальном ПК. После вставки нажмите Ctrl+S, чтобы сохранить файл, и закройте Блокнот.

Блокнот может создать файл в формате “.txt” и файл будет называться как administrators_authorized_keys.txt - это не правильно. Проверьте это командой на сервере:
Test-Path C:\ProgramData\ssh\administrators_authorized_keys
Если возвращается True, тогда вы всё сделали корректно, но если в ответе вы получаете False, тогда используйте эту команду для переименования файла на правильное название:
Rename-Item C:\ProgramData\ssh\administrators_authorized_keys.txt administrators_authorized_keys
Чтоб наконец-то подключится к серверу используя SSH ключ, вам нужно ввести в PowerShell на своем локальном ПК следующую команду:
ssh -i C:\Users\LOCAL_USERNAME\.ssh\id_rsa SERVER_USERNAME@SERVER_IP -p 22
- LOCAL_USERNAME - имя пользователя на вашем локальном Windows-ПК;
- SERVER_USERNAME - имя пользователя на Windows Server, например Administrator;
- SERVER_IP - IP-адрес сервера;
- -p 22 - порт SSH. По умолчанию используется порт 22.
При первом подключении может появиться сообщение:
The authenticity of host 'SERVER_IP' can't be established. Are you sure you want to continue connecting (yes/no)?
Введите “yes” и нажмите Enter. Если при создании ключа вы указывали passphrase, PowerShell попросит ввести её. При вводе символы могут не отображаться - это нормально. Вот так выглядит окно PowerShell при подключении к Windows-серверу по SSH:

Если у вас до сих пор есть трудности с входом на сервер по ключу, вероятно причина в правах на файл administrators_authorized_keys. Повысьте права на файл следующими командами на своем сервере:
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /grant:r "*S-1-5-32-544:F" "*S-1-5-18:F"
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys"

Полезные команды после подключения
После успешного подключения вы попадаете в командную строку Windows Server. Для базовой проверки можно использовать команды. Показать текущего пользователя:
whoami
Показать имя сервера:
hostname
Показать сетевые настройки:
ipconfig