PowerShell: Руководство по быстрому старту с OpenSSH

Опубликовано

На все данные актуальны

Здесь мы рассмотрим пример того, как подключиться к удаленной виртуальной машине или серверу от СЕРВЕР МОЛЛ Cloud для управления ими, используя OpenSSH через PowerShell. В этом примере клиентская система управляется ОС Windows, а серверная система работает под управлением ОС Ubuntu 22.04. Для других дистрибутивов Linux порядок действий будет схожим, но процедуры установки OpenSSH и выделения полномочий пользователям, описанные в разделах “Установка SSH-сервера” и “Создание нового пользователя”, могут отличаться.

В большинстве наших образов дистрибутивов ОС на базе Linux уже установлен сервер OpenSSH. Если вы хотите подключиться к виртуальной машине или серверу с предустановленным сервером OpenSSH от имени пользователя netadmin (root), а не нового, созданного вами, пользователя, то шаги, приведенные в разделе “Действия на Сервере“, выполнять не требуется.

Предварительные условия

Требования к клиенту

  1. Клиентская система должна быть под управлением операционной системы Windows.
  2. На клиентской системе должен быть установлен PowerShell версии 5.1 и выше. О том, как установить Powershell, вы можете ознакомиться в инструкции “Установка PowerShell в Windows”.

Требования к серверу

  1. Серверная система должна управляться операционной системой на базе Linux.
  2. Серверная система должна работать на виртуальной машине или сервере СЕРВЕР МОЛЛ Cloud.
  3. На серверной системе должен быть доступен терминал Linux.

Порядок действий

I. Действия на Сервере

  1. Подключаемся к виртуальной машине или серверу.
    Подключение осуществляем  через консоль панели управления СЕРВЕР МОЛЛ Cloud, как описано в разделе “Подключение через консоль”.
  2. Обновляем информацию об актуальных версиях доступных системе пакетов:
        sudo apt update
  3. Устанавливаем OpenSSH для сервера:
        sudo apt install openssh-server

    Если вы хотите управлять удаленно от имени пользователя netadmin (root) сервера, то шаги 4-6 по созданию нового пользователя можно пропустить и перейти сразу к разделу “Действия на Клиенте”.
  4. Создаём нового пользователя и домашний каталог для него:
        useradd newuser1 -d /home/newuser1 -m
  5. Задаем пароль для нового пользователя:
        passwd newuser1

    На запрос:
        New password:

    Придумываем пароль пользователя, вводим его и нажимаем кнопку Enter, затем повторяем ввод и снова нажимаем Enter. В процессе ввода пароль не будет отображаться на экране.
  6. Добавляем нового пользователя в группу с привилегиями Sudo, если это нужно:
        usermod -aG sudo newuser1

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

II. Действия на Клиенте

  1. Запускаем Powershell от имени администратора.
  2. Определяем версию OpenSSH доступную системе:
        Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'
    Если в результате выполнения команды параметр State будет иметь значение Installed, это означает, что клиент OpenSSH уже установлен в системе, и дальнейшие действия по его установке предпринимать не требуются. В этом случае перейдите к пункту 5.
  3. Устанавливаем OpenSSH для клиента:
        Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

    Если в результате установки параметр RestartNeeded принял значение False, то OpenSSH Client готов к использованию без перезагрузки. В этом случае перейдите к пункту 5.
  4. Перезагружаем устройство.
    Перед перезагрузкой сохраните все несохраненные файлы, затем выполните команду:
        Restart-Computer

    Устройство будет перезагружено, после чего OpenSSH Client будет готов к использованию. После перезагрузки необходимо снова запустить Powershell от имени администратора.
  5. Создаём ключевую пару:
        ssh-keygen

    На запрос:
        PS C:\WINDOWS\system32> ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (C:\Users\current_user/.ssh/id_rsa):

    Отвечаем нажатием клавиши Enter. Это будет означать, что расположение и имя ключевой пары будут установлены по умолчанию. Или можете ввести свой путь к ключу, тогда придется также указывать его при копировании ключа и при соединении с сервером.
    На запрос:
        Enter passphrase (empty for no passphrase):

    Придумываем и вводим парольную фразу, затем нажимаем Enter. Повторно вводим парольную фразу и снова нажимаем Enter. Если парольные фразы не соответствуют, то повторяем ввод.
  6. Пересылаем публичный ключ на Сервер:
        cat C:\Users\current_user.ssh\id_rsa.pub | ssh newuser1@203.0.113.12 "mkdir -p /home/newuser1/.ssh; cat >> /home/newuser1/.ssh/authorized_keys"


    где:
    C:\Users\current_user\.ssh\id_rsa.pub – путь, имя и расширение публичного ключа. Путь и имя ключевой пары отображаются при её создании. 

    newyuser1 – имя пользователя, которого создали для подключения по SSH или используем имя netadmin (root). 

    203.0.113.12 – IP-адрес сервера. Берем его в письме о готовности виртуальной машины или сервера к работе, также его можно получить в панели управления СЕРВЕР МОЛЛ Cloud:
    – Для виртуальной машины: Fixed IP Address в разделе Interfaces.
    – Для выделенных серверов: IP Addresses: в разделе Details.

    /home/newuser1/.ssh – домашняя директория пользователя на сервере, которую указывали при его создании, дополненная поддиректорией /.ssh, где должны относящиеся к OpenSSH данные. Для пользователя root это обычно директория /root. Домашнюю директорию пользователя на сервере можно отобразить командой: echo ~<имя_пользователя>. 

    /home/newuser1/.ssh/authorized_keys – домашняя директория пользователя на сервере, которую указывали при его создании, дополненную поддиректорией /.ssh и именем файла authorized_keys, где будут хранится авторизованные публичные ключи.

    Если к серверу еще не подключались с этого клиента, то отобразится следующий запрос:
        The authenticity of host '203.0.113.12 (203.0.113.12)' can't be established.ECDSA key fingerprint is SHA256:tXw8aipJLyyL4KBAjCaBvHU7K//HzkXuTtdLij2yJ2U.Are you sure you want to continue connecting (yes/no/[fingerprint])?

    Отвечаем, набрав на клавиатуре yes и нажав кнопку Enter, подтверждая своё намерение подключиться к незнакомому хосту.

    На запрос:
        newuser1@203.0.113.12's password:

    Вводим пароль пользователя, который присвоили новому пользователю на Сервере, и нажимаем Enter. Если вы указывали имя пользователя netadmin (root), то пароль к нему возьмем из письма о готовности виртуальной машины или сервера к работе. 
  7. Подключаемся к удаленному серверу:
        ssh newuser1@203.0.113.12

    Используем IP-адрес и имя пользователя которые использовали на предыдущем шаге при пересылке публичного ключа на сервер.

    На запрос:
        $ ssh newuser1@203.0.113.12Enter passphrase for key 'C:\Users\current_user/.ssh/id_rsa':

    Вводим парольную фразу, которую использовали при создании ключевой пары на шаге 5 и нажимаем Enter.

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

    Прервать соединение с сервером и выйти в терминал Клиента вы можете введя команду Exit и нажав Enter.

Подробно об этапах подключения через OpenSSH:

  1. Установка SSH-сервера.
  2. Создание нового пользователя.
  3. Установка SSH-клиента.
  4. Генерация ключевой пары.
  5. Передача публичного ключа на сервер.
  6. Подключение к серверу через SSH.