Kumokonekta sa Windows sa pamamagitan ng SSH tulad ng Linux

Palagi akong nabigo sa pamamagitan ng pagkonekta sa mga Windows machine. Hindi, hindi ako kalaban o tagasuporta ng Microsoft at ng kanilang mga produkto. Ang bawat produkto ay umiiral para sa sarili nitong layunin, ngunit hindi iyon ang tungkol dito.
Noon pa man ay napakasakit para sa akin na kumonekta sa mga server ng Windows, dahil ang mga koneksyon na ito ay maaaring i-configure sa isang lugar (hello WinRM na may HTTPS) o hindi gumagana nang napaka-stable (hello RDP sa mga virtual machine sa ibang bansa).

Samakatuwid, ang pagkakaroon ng hindi sinasadyang makita ang proyekto Win32-OpenSSH, nagpasya akong ibahagi ang aking karanasan sa pag-setup. Marahil ang tool na ito ay magliligtas sa isang tao ng maraming nerbiyos.

Kumokonekta sa Windows sa pamamagitan ng SSH tulad ng Linux

Mga opsyon sa pag-install:

  1. Mano-mano
  2. Sa pamamagitan ng pakete Chocolatey
  3. Sa pamamagitan ng Ansible, halimbawa ng papel jborean93.win_openssh

Susunod, magsasalita ako tungkol sa unang punto, dahil ang lahat ay higit pa o hindi gaanong malinaw sa iba pa.

Gusto kong tandaan na ang proyektong ito ay nasa beta stage pa rin, kaya hindi inirerekomenda na gamitin ito sa produksyon.

Kaya, i-download ang pinakabagong release, sa sandaling ito ay 7.9.0.0p1-beta. Mayroong mga bersyon para sa parehong 32 at 64 bit system.

I-unpack sa C:Program FilesOpenSSH
Isang ipinag-uutos na punto para sa tamang operasyon: tanging ang SYSTEM at ang admin group.

Pag-install ng mga serbisyo gamit ang isang script install-sshd.ps1 matatagpuan sa direktoryong ito

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

Payagan ang mga papasok na koneksyon sa port 22:

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

Paglilinaw: applet Bagong-NetFirewallRule ginagamit sa Windows Server 2012 at mas bago. Sa mga pinakalumang system (o desktop) maaari mong gamitin ang command:

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

Simulan natin ang serbisyo:

net start sshd

Sa pagsisimula, ang mga host key ay awtomatikong bubuo (kung nawawala) sa %programdata%ssh

Maaari naming paganahin ang autostart ng serbisyo kapag nagsimula ang system sa utos:

Set-Service sshd -StartupType Automatic

Maaari mo ring baguhin ang default na command shell (pagkatapos ng pag-install, ang default ay cmd):

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

Paglilinaw: Dapat kang tumukoy ng ganap na landas.

Ano ang susunod?

At pagkatapos ay itinakda namin ito sshd_config, na aming ilalagay C: Data ng Programa. Halimbawa:

PasswordAuthentication no
PubkeyAuthentication yes

At lumikha ng isang direktoryo sa folder ng gumagamit .ssh, at sa loob nito ang file authorized_keys. Isinulat namin ang mga pampublikong susi doon.

Mahalagang paglilinaw: tanging ang user kung saan ang direktoryo ay matatagpuan ang file ang dapat na may karapatang sumulat sa file na ito.

Ngunit kung mayroon kang mga problema sa ito, maaari mong palaging i-off ang right checking sa config:

StrictModes no

Siyanga pala, sa C:Program FilesOpenSSH mayroong 2 script (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), na dapat ngunit hindi obligadong ayusin ang mga karapatan, kasama ang sa authorized_keys, ngunit sa ilang kadahilanan ay hindi sila nagrerehistro.

Huwag kalimutang i-restart ang serbisyo sshd pagkatapos ilapat ang mga pagbabago.

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>

Subjective na mga kalamangan / kahinaan.

Pros:

  • Karaniwang diskarte sa pagkonekta sa mga server.
    Kapag kakaunti ang Windows machine, napakahirap kapag:
    Kaya, dito tayo dumaan sa ssh, at dito ginagamit natin ang rdp,
    at sa pangkalahatan, ang pinakamahusay na kasanayan sa mga balwarte ay una sa isang ssh tunnel, at RDP sa pamamagitan nito.
  • Madaling i-set up
    Sa tingin ko ito ay halata.
  • Bilis ng koneksyon at gumana sa isang malayuang makina
    Walang graphical na shell, na nagse-save ng parehong mga mapagkukunan ng server at ang dami ng ipinadalang data.

Cons:

  • Hindi ganap na pinapalitan ang RDP.
    Hindi lahat ay maaaring gawin mula sa console, sayang. Ang ibig kong sabihin ay mga sitwasyon kung saan kinakailangan ang isang GUI.

Mga materyales na ginamit sa artikulo:
Mag-link sa mismong proyekto
Ang mga opsyon sa pag-install ay walang kahihiyang kinopya mula sa Mga masasabing doc.

Pinagmulan: www.habr.com

Magdagdag ng komento