Ferbine mei Windows fia SSH lykas Linux

Ik bin altyd frustrearre troch ferbining mei Windows-masines. Nee, ik bin gjin tsjinstanner noch in foarstanner fan Microsoft en har produkten. Elk produkt bestiet foar syn eigen doel, mar dêr giet it net om.
It hat foar my altyd heul pynlik west om te ferbinen mei Windows-tsjinners, om't dizze ferbiningen binne konfigureare fia ien plak (hallo WinRM mei HTTPS) of wurkje net heul stabyl (hallo RDP nei firtuele masines yn it bûtenlân).

Dêrom, tafallich tsjinkomme it projekt Win32-OpenSSH, Ik besleat om myn opsetûnderfining te dielen. Miskien sil dit ark immen in protte senuwen besparje.

Ferbine mei Windows fia SSH lykas Linux

Ynstallaasje opsjes:

  1. Manuell
  2. Troch de пакет Chocolade
  3. Fia Ansible, bygelyks rol jborean93.win_openssh

Folgjende sil ik prate oer it earste punt, om't alles min of mear dúdlik is mei de rest.

Ik wol opmerke dat dit projekt noch yn it beta-stadium is, dus it is net oan te rieden om it yn produksje te brûken.

Dat, download de lêste release, op it stuit is it 7.9.0.0p1-beta. D'r binne ferzjes foar sawol 32- as 64-bit systemen.

Utpakke yn C: Program FilesOpenSSH
In ferplichte punt foar juste operaasje: allinnich de SYSTEEM en de admin groep.

Ynstallaasje fan tsjinsten mei in skript install-sshd.ps1 leit yn dizze map

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

Tastean ynkommende ferbiningen op poarte 22:

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

Taljochting: applet Nije-NetFirewallRule brûkt op Windows Server 2012 en letter. Yn 'e âldste systemen (of buroblêd) kinne jo it kommando brûke:

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

Litte wy de tsjinst begjinne:

net start sshd

By it opstarten wurde hostkaaien automatysk oanmakke (as ûntbrekke) yn %programdata%ssh

Wy kinne autostart fan 'e tsjinst ynskeakelje as it systeem begjint mei it kommando:

Set-Service sshd -StartupType Automatic

Jo kinne ek de standert kommando shell feroarje (nei ynstallaasje is de standert cmd):

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

Ferklearring: Jo moatte in absolút paad oantsjutte.

Wat is folgjende?

En dan sette wy it op sshd_config, dêr't wy yn pleatse C: Program Data. Bygelyks:

PasswordAuthentication no
PubkeyAuthentication yes

En meitsje in map yn 'e brûkersmap .ssh, en dêryn de triem autorisearre_kaaien. Wy skriuwe dêr de iepenbiere kaaien op.

Wichtige opheldering: allinnich de brûker yn waans map it bestân leit moat it rjocht hawwe om nei dit bestân te skriuwen.

Mar as jo hjir problemen mei hawwe, kinne jo it kontrolearjen fan rjochten altyd útsette yn 'e konfiguraasje:

StrictModes no

Troch de wei, yn C: Program FilesOpenSSH der binne 2 skripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), dy't moatte mar binne net ferplichte om fêst te stellen rjochten, ynklusyf mei autorisearre_kaaien, mar foar guon reden se net registrearje.

Ferjit net de tsjinst opnij te begjinnen sshd na te passen de feroarings.

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>

Subjektive pros/cons.

Pros:

  • Standert oanpak foar ferbining mei servers.
    As d'r in pear Windows-masines binne, is it heul ûngemaklik as:
    Dat, hjir geane wy ​​fia ssh, en hjir brûke wy rdp,
    en yn it algemien, de bêste-praktyk mei bastions is earst in ssh tunnel, en RDP troch it.
  • Maklik yn te stellen
    Ik tink dat dit fanselssprekkend is.
  • Snelheid fan ferbining en wurkje mei in masine op ôfstân
    D'r is gjin grafyske shell, it bewarjen fan sawol serverboarnen as it bedrach fan oerdroegen gegevens.

Cons:

  • Ferfangt RDP net folslein.
    Net alles kin dien wurde fanút de konsole, helaas. Ik bedoel situaasjes dêr't in GUI is fereaske.

Materialen brûkt yn it artikel:
Link nei it projekt sels
Ynstallaasje opsjes wurde skamteleas kopiearre út Ansible docs.

Boarne: www.habr.com

Add a comment