Инструкция подключения к узлу исследуемой сети, работающему на ОС Windows, по протоколу SSH
Для подключения к узлу исследуемой сети, функционирующему на базе ОС семейства Windows, необходима предварительная настройка сервисов SSH.
Подключение к узлу исследуемой сети
Для подключения к узлу исследуемой сети, функционирующему на базе ОС семейства Windows, необходимо выполнить следующие действия:
-
Запустить Windows PowerShell от имени администратора
-
Проверить статус компонента
Сервер OpenSSH
с помощью команды:Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'
-
В результате выполнения команды должно быть отображено «Installed» в поле «State» (
State : Installed
) -
Изменить тип запуска службы
sshd
на автоматический и запустить ее с помощью команд:Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd
-
Убедиться в том, что
Сервер OpenSSH
запущен и разрешены подключения через порт 22 с помощью команды:netstat -na| find ":22"
-
В результате выполнения команды должна отобразится следующая строка:
TCP 0.0.0.0.22 0.0.0.0 LISTENING
-
Проверить статус правила
Windows Defender Firewall
, разрешающее подключения по порту TCP/22 с помощью команды:Get-NetFirewallRule -Name **OpenSSH-Server** |select Name, DisplayName, Description, Enabled
-
В том случае, если правило по каким-либо причинам отключено (состояние
Enabled=False
) или отсутствует, необходимо добавить новое правило, используя команду:New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
-
Настроить конфигурационный файл
sshd_config
и перезапустить сервисsshd
с помощью команды:restart-service sshd
-
Конфигурационный файл после внесения изменений должен выглядеть следующим образом:
# This is the sshd server system-wide configuration file. See# sshd_config(5) for more information.# The strategy used for options in the default sshd_config shipped with# OpenSSH is to specify options with their default value where# possible, but leave them commented. Uncommented options override the# default value.Port 22AddressFamily anyListenAddress 0.0.0.0#ListenAddress#HostKey PROGRAMDATA/ssh/ssh_host_rsa_key#HostKey PROGRAMDATA/ssh/ssh_host_dsa_key#HostKey PROGRAMDATA/ssh/ssh_host_ecdsa_key#HostKey PROGRAMDATA/ssh/ssh_host_ed25519_key# Ciphers and keying#RekeyLimit default none# Logging#SyslogFacility AUTH#LogLevel INFO# Authentication:#LoginGraceTime 2m#PermitRootLogin prohibit-passwordStrictModes no#MaxAuthTries 6#MaxSessions 10PubkeyAuthentication yes# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2# but this is overridden so installations will only check .ssh/authorized_keysAuthorizedKeysFile .ssh/authorized_keys#AuthorizedPrincipalsFile none# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts#HostbasedAuthentication no# Change to yes if you don’t trust ~/.ssh/known_hosts for# HostbasedAuthentication#IgnoreUserKnownHosts no# Don’t read the user’s ~/.rhosts and ~/.shosts files#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!PasswordAuthentication yes#PermitEmptyPasswords no# GSSAPI options#GSSAPIAuthentication no#AllowAgentForwarding yes#AllowTcpForwarding yes#GatewayPorts no#PermitTTY yes#PrintMotd yes#PrintLastLog yes#TCPKeepAlive yes#UseLogin no#PermitUserEnvironment no#ClientAliveInterval 0#ClientAliveCountMax 3#UseDNS no#PidFile /var/run/sshd.pid#MaxStartups 10:30:100#PermitTunnel no#ChrootDirectory none#VersionAddendum none# no default banner path#Banner none# override default of no subsystemsSubsystem sftp sftp-server.exe# Example of overriding settings on a per-user basis#Match User anoncvs# AllowTcpForwarding no# PermitTTY no# ForceCommand cvs server#Match Group administrators# AuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keysподсказкаЖирным шрифтом выделены внесенные в конфигурационный файл изменения
-
Запустить командную строку от имени администратора и сгенерировать пару ключей используя команду:
ssh-keygen
-
В папке, в которой была создана пара ключей (C:\Users\ %User%.ssh), создать файл
authorized_keys.CRLF
-
В папке
C:\ProgramData\ssh\
создать файлadministrators_authorized_keys.CRLF
-
Изменить права доступа на созданные файлы (удалить всех пользователей кроме «Система» и текущего пользователя) и сохранить изменения
-
В Windows PowerShell поочередно выполнить следующие, поставляемые со Сканер-ВС, скрипты:
powershell.exe -ExecutionPolicy Bypass -File fixhostfilepermissions.ps1
powershell.exe -ExecutionPolicy Bypass -File fixuserfilepermissions.ps1
-
Перезапустить сервис
sshd
с помощью команды:Restart-Service sshd
Необходимые для настройки подключения по протоколу SSH, а также отмены внесенных
изменений скрипты при установке Сканер-ВС по умолчанию сохраняются в папке
/opt/echelon/scanner/scripts
. Так же необходимые файлы можно скачать, перейдя
по ссылке https://localhost/winrm/
Настройка сервисов SSH с помощью встроенного приложения «Параметры»
Для настройки подключения по протоколу SSH с помощью встроенного приложения
Параметры
необходимо выполнить следующие действия:
-
Открыть встроенное приложение
Параметры
и выбрать элементПриложения
-
Перейти в раздел
Приложения и возможности
и нажать наДополнительные компоненты
-
В списке установленных компонентов необходимо убедиться в наличии компонентов
Клиент OpenSSH
на рабочей станции, с которой будет производится подключение, иСервер OpenSSH
на узле исследуемой сети. В том случае, если данные компоненты не установлены, необходимо нажать наДобавить компонент
, в открывшемся интерфейсеДобавление дополнительного компонента
выбрать указанные компоненты и нажатьУстановить
-
При установке серверного компонента
OpenSSH
автоматически создается и включается правилоWindows Defender Firewall
с именемOpenSSH-Server-In-TCP
, которое разрешает входящий трафик по протоколу SSH через порт 22. В том случае, если данное правило выключено и порт 22 закрыт, то подключения будут отклонены и сброшены. -
Запустить Windows PowerShell от имени администратора.
-
Проверить статус правила можно с помощью команды:
Get-NetFirewallRule -Name OpenSSH-Server |select Name, DisplayName, Description, Enabled
-
В том случае, если правило по каким-либо причинам отключено (состояние
Enabled=False
) или отсутствует, необходимо добавить новое правило, используя команду:New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Настройка сервисов SSH с помощью Windows PowerShell
Для настройки подключения по протоколу SSH с помощью Windows PowerShell необходимо выполнить следующие действия:
-
Запустить Windows PowerShell от имени администратора
-
Проверить доступность сервисов
OpenSSH
с помощью команды:Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
-
В том случае, если ни один из описанных компонентов не установлен, в результате выполнения команды отобразится следующее сообщение:
Name : OpenSSH.Client~~~~0.0.1.0State : NotPresentName : OpenSSH.Server~~~~0.0.1.0State : NotPresent -
Установить на рабочей станции и узле исследуемой сети компоненты
Клиент OpenSSH
иСервер OpenSSH
соответственно с помощью следующих команд:# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 -
Результатом выполнения обеих команд должен быть:
Path :Online : TrueRestartNeeded : False
Запуск и настройка OpenSSH Server
Для запуска и настройки OpenSSH Server
для первого использования необходимо
выполнить следующие действия:
-
Запустить Windows PowerShell от имени администратора
-
Запустить службу
sshd service
путем выполнения следующих команд:# Start the sshd service
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}