ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Windows ΠΏΠΎ SSH ΠΊΠ°ΠΊ Π² Linux

МСня всСгда ΡƒΠ΄Ρ€ΡƒΡ‡Π°Π»ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Windows машинам. НСт, я Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊ ΠΈ Π½Π΅ сторонник Microsoft ΠΈ ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ сущСствуСт для своСй Ρ†Π΅Π»ΠΈ, Π½ΠΎ Ρ€Π΅Ρ‡ΡŒ Π½Π΅ ΠΎΠ± этом.
Для мСня всСгда Π±Ρ‹Π»ΠΎ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ больно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ сСрвСрам с Windows, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ эти ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π»ΠΈΠ±ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄Π½ΠΎ мСсто (ΠΏΡ€ΠΈΠ²Π΅Ρ‚ WinRM с HTTPS) Π»ΠΈΠ±ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ (здравствуй RDP ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°ΠΌ Π·Π° ΠΎΠΊΠ΅Π°Π½ΠΎΠΌ).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, случайно Π½Π°Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ²ΡˆΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Win32-OpenSSH, я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ настройки. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ эта Ρ‚ΡƒΠ»Π·Π° ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΊΡƒΡ‡Ρƒ Π½Π΅Ρ€Π²ΠΎΠ².

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Windows ΠΏΠΎ SSH ΠΊΠ°ΠΊ Π² Linux

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ установки:

  1. Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ
  2. Π§Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚ Chocolatey
  3. Π§Π΅Ρ€Π΅Π· Ansible, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€ΠΎΠ»ΡŒ jborean93.win_openssh

Π”Π°Π»Π΅Π΅ я Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Ρ‚Π°ΠΊ всС Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π½Π΅Π΅ понятно.

ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ находится Π½Π° стадии beta, поэтому Π΅Π³ΠΎ Π½Π΅ Ρ€Π΅ΠΊΡƒΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² production.

Π˜Ρ‚Π°ΠΊ, скачиваСм послСдний Ρ€Π΅Π»ΠΈΠ·, Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это 7.9.0.0p1-beta. Π•ΡΡ‚ΡŒ вСрсии ΠΊΠ°ΠΊ для 32 Ρ‚Π°ΠΊ ΠΈ для 64 Π±ΠΈΡ‚Π½Ρ‹Ρ… систСм.

РаспаковываСм Π² C:Program FilesOpenSSH
ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹: ΠΏΡ€Π°Π²Π° Π½Π° запись Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ SYSTEM ΠΈ Ρƒ админской Π³Ρ€ΡƒΠΏΠΏΡ‹.

УстанавливаСм сСрвисы скриптом install-sshd.ps1 находящимся Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ входящиС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° 22 ΠΏΠΎΡ€Ρ‚:

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

Π£Ρ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅: Π°ΠΏΠΏΠ»Π΅Ρ‚ New-NetFirewallRule ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° Windows Server 2012 ΠΈ Π½ΠΎΠ²Π΅Π΅. Π’ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ старых систСмах (Π»ΠΈΠ±ΠΎ дСсктопных) ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

ЗапускаСм сСрвис:

net start sshd

ΠŸΡ€ΠΈ запускС Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски сгСнСрированы хост-ΠΊΠ»ΡŽΡ‡ΠΈ (Ссли ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚) Π² %programdata%ssh

Автозапуск сСрвиса ΠΏΡ€ΠΈ запускС систСмы ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Set-Service sshd -StartupType Automatic

Π’Π°ΠΊ ΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (послС установки, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” cmd):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Π£Ρ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅: НСобходимо ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

Π§Ρ‚ΠΎ дальшС?

А дальшС настраиваСм sshd_config, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располоТСм Π² C:ProgramDatassh. НапримСр:

PasswordAuthentication no
PubkeyAuthentication yes

И создаСм Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ .ssh, Π° Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» authorized_keys. Π’ΡƒΠ΄Π° записываСм ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ.

Π’Π°ΠΆΠ½ΠΎΠ΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅: ΠΏΡ€Π°Π²Π° Π½Π° запись Π² этот Ρ„Π°ΠΉΠ», Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π² Ρ‡ΡŒΠ΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ».

Но Ссли Ρƒ вас ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с этим, всСгда ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π°Π² Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅:

StrictModes no

К слову, Π² C:Program FilesOpenSSH Π»Π΅ΠΆΠ°Ρ‚ 2 скрипта (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½ΠΎ Π½Π΅ обязаны Ρ„ΠΈΠΊΡΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π°, Π² Ρ‚ΠΎΠΌ числС ΠΈ с authorized_keys, Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π½Π΅ фиксят.

НС забываСтся ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сСрвис sshd послС для примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> Get-Host


Name             : ConsoleHost
Version          : 5.1.14393.2791
InstanceId       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹/минусы.

ΠŸΠ»ΡŽΡΡ‹:

  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ ΠΊ сСрвСрам.
    Когда Π΅ΡΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Windows машин, ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π°:
    Π’Π°ΠΊ, сюда ΠΌΡ‹ Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ssh, Π° Ρ‚ΡƒΡ‚ Ρ€Π΄ΠΏ,
    ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ best-practice с бастионами, сначала ssh-Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ, Π° Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ RDP.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° настройки
    Π‘Ρ‡ΠΈΡ‚Π°ΡŽ Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ.
  • Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ машиной
    НСт графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, экономятся ΠΊΠ°ΠΊ рСсурсы сСрвСра, Ρ‚Π°ΠΊ ΠΈ количСство ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠΈΠ½ΡƒΡΡ‹:

  • НС замСняСт RDP ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.
    НС всС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· консоли, ΡƒΠ²Ρ‹. Π― имСю Π²Π²ΠΈΠ΄Ρƒ ситуации, ΠΊΠΎΠ³Π΄Π° трСбуСтся GUI.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅:
Бсылка Π½Π° сам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ установки бСссовСстно скопированы с Ansible docs.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com