opened image

Подключение к VPS серверу по SSH ключу

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

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

К примеру Вы уже пробрели сервер из личного кабинета. Как это сделать описано в данной статье. Далее в личном кабинете скопируйте данные доступа из Инструкции.

 

Подключение к VPS серверу по SSH ключу - 1


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

Подключение к VPS серверу по SSH ключу - 2
В поле Host Name (or IP address) вводим IP Вашего сервера. В поле Port вводим 22.

Для генерации пары ключей, есть утилита ssh-keygen. По умолчанию она уже установлена, Она создает пару 2048-битных ключей RSA, которые нам подходят.
 

От имени пользователя, для которого нужно создать ключи выполнить команду (в данном случае это root):

 

ssh-keygen


На задаваемые вопросы в процессе генерации, можете просто нажать Enter. Так как наша цель просто сгенерировать ключ. 

И получаем приблизительную картину:


Подключение к VPS серверу по SSH ключу - 3

 

После этого, содержимое файла 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


Подключение к VPS серверу по SSH ключу - 4Сохраняем изменения. 

 

После чего перезапускаем службу:

 

service sshd reload

 

Теперь выводим в консоль ключ, что бы скопировать себе на ПК.

 

cat ~/.ssh/id_rsa


Подключение к VPS серверу по SSH ключу - 5

Копируем от начала: 

 

-----BEGIN OPENSSH PRIVATE KEY-----


До конца:

 

-----END OPENSSH PRIVATE KEY-----

 

Добавляем в PuttyGen. Данная программа установилась вместе с Putty.

Подключение к VPS серверу по SSH ключу - 6

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


Подключение к VPS серверу по SSH ключу - 7

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

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


Подключение к VPS серверу по SSH ключу - 8

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

Теперь для подключения по ключу, выберите свой сервер из списка Saved Sessions, и нажмите Load и Open


Подключение к VPS серверу по SSH ключу - 9

Теперь Вы можете подключаться данным способом не вводя пароль, и при этом защитив свое подключение. 

В следующей статье мы еще обезопасим наш сервер и подключение к нему, отключив авторизацию по паролю, и сменив стандартный порт 22 на не стандартный. 

 

Подключение к Windows-серверу по SSH-ключу

 

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


Сперва вам нужно подготовить ваш Windows server к этому. Обратите внимание: описанный ниже способ актуален для Windows Server 2022. В других версиях Windows включение и настройка SSH могут отличаться. Если вы используете другую версию операционной системы, рекомендуем ознакомиться с отдельными инструкциями, где подробно разобраны соответствующие способы включения SSH. 

Команды из этого раздела нужно выполнять на 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

 

Подключение к VPS серверу по SSH ключу - 10


Чтоб подключаться к 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. Это нормально.

 

Подключение к VPS серверу по SSH ключу - 11

 


После создания у вас появятся новые файлы в директории 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

 

 

Подключение к VPS серверу по SSH ключу - 12

 

После этого, необходимо добавить этот ключ на сервер в файл administrators_authorized_keys. В Windows Server этот файл обычно располагается по следующему пути:

 

C:\ProgramData\ssh\administrators_authorized_keys


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

 

Подключение к VPS серверу по SSH ключу - 13

 

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

 

 

Подключение к VPS серверу по SSH ключу - 14

 

 

Если файл administrators_authorized_keys отсутствует - его необходимо создать вручную. Откройте PowerShell на сервере от имени администратора и выполните команду:

 

notepad C:\ProgramData\ssh\administrators_authorized_keys


Если Блокнот спросит, создать ли новый файл, нажмите “Да”. В открывшийся файл вставьте публичный ключ, который вы скопировали из id_rsa.pub на локальном ПК. После вставки нажмите Ctrl+S, чтобы сохранить файл, и закройте Блокнот. 

 

Подключение к VPS серверу по SSH ключу - 15

 

 

Блокнот может создать файл в формате “.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:

 

 

Подключение к VPS серверу по SSH ключу - 16


Если у вас до сих пор есть трудности с входом на сервер по ключу, вероятно причина в правах на файл 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" 

 

 

Подключение к VPS серверу по SSH ключу - 17

 

Полезные команды после подключения


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

whoami


Показать имя сервера:

hostname


Показать сетевые настройки:

ipconfig