Как подключиться к windows server по ssh

В современных версиях Windows уже есть встроенный SSH сервер на базе пакета OpenSSH. В этой статье мы покажем, как установить и настроить OpenSSH сервер в Windows 10/11 и Windows Server 2022/2019 и подключиться к нему удаленно по защищенному SSH протоколу (как к Linux).

Содержание:

  • Установка сервера OpenSSH в Windows
  • Настройка SSH сервера в Windows
  • Sshd_config: Конфигурационный файл сервера OpenSSH
  • Подключение по SSH к Windows компьютеру
  • Логи SSH подключений в Windows

Установка сервера OpenSSH в Windows

Пакет OpenSSH Server включен в современные версии Windows 10 (начиная с 1803), Windows 11 и Windows Server 2022/2019 в виде Feature on Demand (FoD). Для установки сервера OpenSSH достаточно выполнить PowerShell команду:

Get-WindowsCapability -Online | Where-Object Name -like ‘OpenSSH.Server*’ | Add-WindowsCapability –Online

Или при помощи команды DISM:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Если ваш компьютер подключен к интернету, пакет OpenSSH.Server будет скачан и установлен в Windows.

Также вы можете установить сервер OpenSSH в Windows через современную панель Параметры (Settings -> Apps and features -> Optional features -> Add a feature, Приложения -> Управление дополнительными компонентами -> Добавить компонент. Найдите в списке OpenSSH Server и нажмите кнопку Install).

Установка openssh сервера из панели параметры windows 10

На изолированных от интернета компьютерах вы можете установить компонент с ISO образа Features On Demand (доступен в личном кабинете на сайте Microsoft: MSDN или my.visualstudio.com). Скачайте диск, извлеките его содержимое в папку c:\FOD (достаточно распаковать извлечь файл
OpenSSH-Server-Package~31bf3856ad364e35~amd64~~.cab
), выполните установку из локального репозитория:

Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source c:\FOD

Также доступен MSI установщик OpenSSH для Windows в официальном репозитории Microsoft на GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases/). Например, для Windows 10 x64 нужно скачать и установить пакет OpenSSH-Win64-v8.9.1.0.msi. Следующая PowerShell команда скачает MSI файл и установит клиент и сервер OpenSSH:

Invoke-WebRequest https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.9.1.0p1-Beta/OpenSSH-Win64-v8.9.1.0.msi -OutFile $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi -UseBasicParsing

msiexec /i c:\users\root\downloads\OpenSSH-Win64-v8.9.1.0.msi

установочный msi файл openssh server для windows

Также вы можете вручную установить OpenSSH сервер в предыдущих версиях Windows (Windows 8.1, Windows Server 2016/2012R2). Пример установки Win32-OpenSSH есть в статье “Настройка SFTP сервера (SSH FTP) в Windows”.

Чтобы проверить, что OpenSSH сервер установлен, выполните:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed

проверить что установлен OpenSSH сервер в windows 10

Настройка SSH сервера в Windows

После установки сервера OpenSSH в Windows добавляются две службы:

  • ssh-agent (OpenSSH Authentication Agent) – можно использовать для управления закрытыми ключами если вы настроили SSH аутентификацию по ключам;
  • sshd (OpenSSH SSH Server) – собственно сам SSH сервер.

Вам нужно изменить тип запуска службы sshd на автоматический и запустить службу с помощью PowerShell:

Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

Start-Service sshd - запустить openssh

С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на порту TCP:22 :

netstat -na| find ":22"

nestat - порт 22 ssh сервера windows

Проверьте, что включено правило брандмауэра (Windows Defender Firewall), разрешающее входящие подключения к Windows по порту TCP/22.

Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

правило firewall для доступа к windows через ssh

Если правило отключено (состоянии Enabled=False) или отсутствует, вы можете создать новое входящее правило командой New-NetFirewallRule:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Рассмотрим, где храниться основные компоненты OpenSSH:

  • Исполняемые файлы OpenSSH Server находятся в каталоге
    C:\Windows\System32\OpenSSH\
    (sshd.exe, ssh.exe, ssh-keygen.exe, sftp.exe и т.д.)
  • Конфигурационный файл sshd_config (создается после первого запуска службы):
    C:\ProgramData\ssh
  • Файлы authorized_keys и ssh ключи можно хранить в профиле пользователей:
    %USERPROFILE%\.ssh\

Sshd_config: Конфигурационный файл сервера OpenSSH

Настройки сервере OpenSSH хранятся в конфигурационном файле %programdata%\ssh\sshd_config. Это обычный текстовый файл с набором директив. Для редактирования можно использовать любой текстовый редактор (я предпочитаю notepad++). Можно открыть с помощью обычного блокнота:

start-process notepad C:\Programdata\ssh\sshd_config

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

DenyUsers winitpro\[email protected]
DenyUsers corp\*

Чтобы разрешить подключение только для определенной доменной группы:

AllowGroups winitpro\sshadmins

Либо можете разрешить доступ для локальной группы:

AllowGroups sshadmins

По умолчанию могут к openssh могут подключаться все пользователи Windows. Директивы обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups,AllowGroups.

Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.

DenyGroups Administrators

Следующие директивы разрешают SSH доступ по ключам (SSH аутентификации в Windows с помощью ключей описана в отдельной статье) и по паролю:

PubkeyAuthentication yes
PasswordAuthentication yes

Вы можете изменить стандартный SSH порт TCP/22, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.

После любых изменений в конфигурационном файле sshd_config нужно перезапускать службу sshd:

restart-service sshd

Подключение по SSH к Windows компьютеру

Теперь вы можете попробовать подключиться к своей Windows 10 через SSH клиент (в этом примере я использую putty).

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

ssh [email protected]

В этом примере
alexbel
– имя пользователя на удаленном Windows компьютере, и 192.168.31.102 – IP адрес или DNS имя компьютера.

Обратите внимание что можно использовать следующие форматы имен пользователей Windows при подключении через SSH:

  • alex@server1
    – локальный пользователь Windows
  • [email protected]@server1
    –пользователь Active Directory (в виде UPN) или аккаунт Microsoft/ Azure(Microsoft 365)
  • winitpro\alex@server1
    – NetBIOS формат имени

В домене Active Directory можно использовать Kerberos аутентификацию в SSH. Для этого в sshd_config нужно включить параметр:

GSSAPIAuthentication yes

После этого можно прозрачно подключать к SSH сервер с Windows компьютера в домене из сессии доменного подключается. В этом случае пароль пользователя не указывается и выполняется SSO аутентификация через Kerberos:

ssh -K server1

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

putty сохранить ключ

Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.

ssh сессия в win 10 на базе openssh

При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.

admin@win10tst C:\Users\admin>

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

подключение к windows 10 через ssh

Я предпочитаю работать в командной строке PowerShell. Чтобы запустить интерпретатор PowerShell, выполните:

powershell.exe

powershell.exe в ssh сессии windows

Чтобы изменить командную оболочку (Shell) по умолчанию в OpenSSH с cmd.exe на PowerShell, внесите изменение в реестр такой командой:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

openssh - изменить shell по умолчанию на powershell

Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение
PS C:\Users\admin>
).

powershell cli в windows 10 через ssh

В SSH сессии запустилась командная строка PowerShell, в которой работают привычные функции: авто дополнение, раскраска модулем PSReadLine, история команд и т.д. Если текущий пользователь входит в группу локальных администраторов, то все команды в его сессии выполняются с повышенными правами даже при включенном UAC.

Логи SSH подключений в Windows

В Windows логи подключений к SSH серверу по-умолчанию пишутся не в текстовые файлы, а в отдельный журнал событий через Event Tracing for Windows (ETW). Откройте консоль Event Viewer (
eventvwr.msc
>) и перейдите в раздел Application and services logs -> OpenSSH -> Operational.

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

EventID: 4
sshd: Accepted password for root from 192.168.31.53 port 65479 ssh2

события подключения к openssh сервер windows в event viewer

Если была выполнена аутентификация с помощью SSH ключа, событие будет выглядеть так:

sshd: Accepted publickey for locadm from 192.168.31.53 port 55772 ssh2: ED25519 SHA256:FEHDEC/J72Fb2zC2oJNb45678967kghH43h3bBl31ldPs

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

SyslogFacility LOCAL0
LogLevel INFO

Перезапустите службу sshd и провеьте, что теперь логи SSH сервера пишутся в файл C:\ProgramData\ssh\logs\sshd.log

текстовый sshd.log в windows

Время на прочтение3 мин

Количество просмотров6.5K

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

Данный способ особо поможет пользователям macOS и Linux при управлении гетерогенными инфраструктурами через терминал, ведь полноценной реализации RSRP провайдера для Powershell Core до сих пор нет (но Microsoft ведет работу над ним), таким образом просто подключиться к Windows Server из кросс-платформенного Powershell Core не удастся. Нам поможет OpenSSH для Windows, который активно развивается, а Microsoft это развитие поддерживает финансово.

В облаке Azure Pack Infrastructure от InfoboxCloud мы уже предсоздали образ с Windows Server, версии 1709 для современных веб-приложений и сервисов, требующих стека Microsoft.

В образе предустановлено и настроено:

  • OpenSSH. Просто создайте виртуальную машину, пробросьте порт 22 и можно подключаться по SSH.
  • пакетный менеджер chocolatey, позволяющий обновлять все преднастроенное с помощью choco upgrade all и быстро устанавливать дополнительное ПО.
  • Windows Subsystem for Linux. Вы можете просто установить подходящий дистрибутив Linux в Windows и иметь привычное окружение, хорошо подходящее для задач администрирования.
  • Поддержка контейнеров Windows и Docker (предустановлены docker, docker-compose, docker-machine и consul, возможность быстрой установки kubernetes при необходимости).

Также в статье рассказано, как добавить поддержку SSH на Windows на собственном сервере или виртуальной машине.

В конце статьи скидка на облако.

Зачем вообще нужно подключаться к Windows Server по SSH

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

Как подключиться к Windows Server по SSH?

Готовый образ для современных веб-приложений и сервисов

Заполните форму для получения доступа в облако.
Мы предсоздадим вам всю требуемую инфраструктуру и вы сразу сможете начать работать.

Для подключения по SSH в качестве логина используйте Administrator, пароль — указанный при создании серверов (будет отправлен в письме с доступами).

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

Если вы хотите создать серверы самостоятельно — воспользуйтесь образом «WS1709 DC Core EN SSH Docker».

Для обновления ОС используйте команду

sconfig

Для обновления предустановленного ПО, команду:

choco upgrade all

Нужен графический интерфейс для управления ОС без него? Читайте прошлую статью про Project Honolulu – веб-интерфейс управления современными Windows Server.

Самостоятельная установка OpenSSH на Windows Server

Если вы уже используете Windows Server (приходите и мы его смигрируем в облако и все вам поставим :) ), ниже расскажем как наиболее простым образом установить OpenSSH самостоятельно.

Сделаем это на примере обычной Windows Server 2016. Подключитесь к серверу по RDP (порт 3389).
Запустите Powershell от имени администратора.

Установите пакетный менеджер Chocolatey командой:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

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

choco install openssh -params '"/SSHServerFeature"'

Для обновления переменных окружения уже запущенного терминала выполните команду:

refreshenv

Проверьте подключение к Windows Server по SSH.

Для включения возможности выполнения удаленных команд, запустите Powershell и введите:

Enable-PSRemoting

Теперь вы можете полноценно управлять Windows Server по SSH и из консоли Windows Server подключаться к другим Linux–серверам даже без установки Linux в Windows Subsystem for Linux (WSL).

Скидка 25% на облако для читателей статьи

В следующих статьях мы рассмотрим другие технологии из образа для современных веб-приложений и сервисов на Windows, но можно не ждать новой статьи. Всем новым пользователям, подавшим заявку до 15 декабря 2017 года мы дарим 25% скидку на ресурсы облака Azure Pack Infrastructure до 1 марта 2018 года.

Для получения скидки заполните форму https://infoboxcloud.ru/request и в поле комментария укажите секретный код: «Скидка 25% с хабра за инновации». Также будет полезно, если укажете требуемое количество серверов, для каждого количество ядер процессора, объем оперативной памяти, диска и желаемую ОС. Если нужно перенести текущую ИТ-инфраструктуру в облако — поможем с этим.

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

Отличного дня и успешной работы!

Для того чтобы установить OpenSSH на Windows Server 2019 или 2022 найдите и откройте Windows Settings. В новом окне перейдите в раздел «Apps» и выберите «Select Optional Features» в разделе «Apps & Features».

Нажмите «Manage optional features», и выберите OpenSSH Server из полученного списка, затем нажмите «Install».

После установки запустите PowerShell от Администратора. Вставьте следующую команду для установки OpenSSH Server.

Add-WindowsCapability -Online -Name OpenSSH.Server

Установите OpenSSH Client:

Add-WindowsCapability -Online -Name OpenSSH.Client

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

start-process notepad C:\Programdata\ssh\sshd_config

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

Start-Service sshd

Далее необходимо будет настроить Firewall.

Для этого в меню “Пуск” находим “Server Manager”. Там выбираем “Tools” и клацаем на “Windows Defender Firewall with Advanced Security” в выпавшем списке.

Теперь кликаем на “Inbound Rules” в открывшемся окне и создаём новое правило “New Rule”. В окне “New Inbound Rule Wizard” выбираем “Protocol and Ports”, клацаем “TCP” и указываем порт 22 в “Specific local ports:”. После жмём Next, Next даём название правилу и нажимаем Finish.

Теперь всё готово к подключению по ssh.

Подключиться можно с любой машины – как с linux, так и с Windows. Достаточно ввести:

ssh -l Administrator SERVER-IP

Согласиться с парой ключей:

ECDSA key fingerprint is SHA256:Vv2A8NOfzCLR/e35Fm5UyqGeJptrn6ZlY6Vabx0wHXQ.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

И вы можете работать на удалённом сервере по ssh, пример подключения с linux-машины.

Спасибо за чтение! Надеемся статья была для вас полезна.

SSH-протокол (англ. Secure Shell ) используется для безопасного удалённого управления операционной системой. По SSH можно подключиться к любому серверу с операционной системой семейства Linux.

Если на вашем сервере установлена ОС Windows Server — используйте подключение по RDP.

  • Где найти доступы к серверу
  • Подключение по SSH в Windows
  • Подключение по SSH в Linux/MacOS

Где найти доступы к серверу

Для подключения по SSH потребуется указать IP-адрес, пароль и логин администратора сервера. В Личном кабинете в разделе Виртуальные серверы выберите нужный сервер и сверху на панели инструментов нажмите кнопку Инструкция — в блоке «Доступ к серверу» указаны IP-адрес и логин. Пароль вы устанавливаете самостоятельно — по кнопке Задать пароль (если ещё не сделали это ранее).

Мы не храним пароль для доступа к серверу. Ответственность за его сохранность лежит на пользователе.

Подключение по SSH в Windows

Если на вашем компьютере установлена ОС Windows, а на сервере — UNIX-подобная система (например, Ubuntu, Debian, CentOS и др.), то для установки SSH-соединения можно использовать PuTTY или OpenSSH.

Рассмотрим подключение по SSH через утилиту OpenSSH (доступно для Windows 10/Windows Server 2019 и новее).

Шаги для создания подключения:

  1. Откройте PowerShell от имени администратора.
  2. Если у вас не установлен OpenSSH, выполните команду:
Add-WindowsCapability -Online -Name OpenSSH.Client

Проверить, установлен ли OpenSSH, можно командой:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'

Если статус installed, данное ПО доступно к работе на вашем Windows.

  1. Выполним все в том же PowerShell команду: 

ssh username@server_ip

где:

  • username — имя пользователя на Linux-сервере.
  • server_ip — IP-адрес или имя хоста сервера.

Если используется нестандартный порт SSH (по умолчанию — 22), укажите его с помощью флага-p:

ssh username@server_ip -p порт

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

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

Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия:

  1. Скачайте нужную версию PuTTY по ссылке.
  2. Запустите файл putty.exe. Откроется окно программы:

    Запуск программы PuTTY

    По умолчанию никаких настроек программы менять не нужно. Достаточно убедиться, что указан порт Port 22 и тип соединения Connection type — SSH.

  3. В поле Host Name (or IP address) введите IP-адрес сервера. Нажмите кнопку Open.

    Ввод IP-адрес сервера

    Может появиться предупреждение системы безопасности PuTTY — оно срабатывает при подключении к новому серверу.  Нажмите Да — и соединение продолжится.

    Предупреждение системы безопасности

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

    Ввод имени пользователя

  5. В следующей строке введите пароль пользователя. При вводе пароля символы в командной строке не отображаются: можно набрать пароль вслепую или вставить кликом правой кнопки мыши, предварительно скопировав (Ctrl+C). При этом никаких видимых изменений в консоли не произойдёт, но не переживайте, так и должно быть. После ввода нажмите клавишу Enter. Если имя пользователя или пароль указаны неправильно, выведется ошибка «Access denied». В случае успешного подключения откроется командная строка виртуального сервера.
    Успешное подключение к серверу

Готовые серверы от 219 ₽/мес

Готовые конфигурации VPS/VDS в дата-центрах в России и Европе. Быстрый запуск сервера за 2 минуты

Подробнее

Подключение по SSH в Linux/MacOS

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

В операционных системах семейства Linux (Ubuntu и др.) его можно открыть сочетанием клавиш Ctrl+Alt+T.

В MacOS приложение Терминал можно найти через Spotlight (иконка поиска в правом верхнем углу экрана).

Терминал MacOS

Подключиться к виртуальному серверу по SSH можно одной командой: 

ssh username@ip_adress

где вместо username нужно указать логин пользователя, вместо ip-adress — IP-адрес сервера, к которому вы подключаетесь. Если на сервере используется нестандартный порт SSH, команда изменится:

ssh username@ip_adress -p 22

где 22 — порт, по которому будет произведено подключение по SSH.

После ввода команды система запросит подтверждение подключения (необходимо ввести yes и нажать Enter) и пароль пользователя. После ввода нажмите клавишу Enter откроется SSH-соединение:

Проверка SSH-соединения

Этот материал был полезен?

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Командная строка установщика windows 10
  • Активатор для windows 11 hwid kms38 как пользоваться
  • Firewall для windows server
  • Оценка системы недоступна windows 7 как исправить
  • Как восстановить загрузчик windows 10 с помощью командной строки