Konektante al Vindozo per SSH kiel en Linukso

Mi ĉiam ĉagreniĝis pri konekto al Vindozaj maŝinoj. Ne, mi ne estas kontraŭulo aŭ subtenanto de Microsoft kaj iliaj produktoj. Ĉiu produkto ekzistas por sia propra celo, sed tio ne estas la afero.
Ĉiam estis terure dolora por mi konektiĝi al Vindozaj serviloj, ĉar ĉi tiuj konektoj estas aŭ agorditaj per unu loko (saluton WinRM kun HTTPS) aŭ ne funkcias tre stabile (saluton RDP al virtualaj maŝinoj eksterlande).

Sekve, hazarde enpuŝi la projekton Win32-OpenSSH, mi decidis kunhavigi mian instalindan sperton. Eble ĉi tiu ilo savos al iu multajn nervojn.

Konektante al Vindozo per SSH kiel en Linukso

Instalaj opcioj:

  1. Mane
  2. Tra la pako Ĉokolado
  3. Per Ansible, ekzemple rolo jborean93.win_openssh

Plue, mi parolos pri la unua punkto, ĉar kun la ceteraj ĉio estas pli-malpli klara.

Mi rimarkas, ke ĉi tiu projekto ankoraŭ estas en la beta-fazo, do ne rekomendas uzi ĝin en produktado.

Do, elŝutu la lastan eldonon, nuntempe ĝi estas 7.9.0.0p1-betao. Estas versioj por kaj 32 kaj 64 bitaj sistemoj.

Malpakado enen C:ProgramdosierojOpenSSH
Deviga momento por ĝusta funkciado: nur la SISTEMO kaj la administra grupo.

Instali servojn per skripto instal-sshd.ps1 troviĝas en ĉi tiu dosierujo

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

Permesu envenantajn konektojn sur haveno 22:

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

Specifo: apleto New-NetFirewall Rule uzata en Windows Server 2012 kaj pli novaj. En la plej malnovaj sistemoj (aŭ labortablaj), vi povas uzi la komandon:

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

Ni komencas la servon:

net start sshd

Ĉe ekfunkciigo, gastigaj ŝlosiloj (se mankas) estos aŭtomate generitaj %programdata%ssh

Ni povas ebligi aŭtomatan lanĉon de la servo ĉe la ekfunkciigo de la sistemo per la komando:

Set-Service sshd -StartupType Automatic

Ankaŭ, vi povas ŝanĝi la defaŭltan komandan ŝelon (post instalado, defaŭlte - cmd):

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

Klarigo: Vi devas specifi absolutan vojon.

Kio sekvas?

Kaj tiam ni starigis sshd_config, kiu situas en C:ProgramDatash. Ekzemple:

PasswordAuthentication no
PubkeyAuthentication yes

Kaj kreu dosierujon en la uzanta dosierujo .ssh, kaj en ĝi la dosiero rajtigitaj_ŝlosiloj. Ni skribas tie publikajn ŝlosilojn.

Grava klarigo: nur la uzanto, en kies dosierujo troviĝas la dosiero, havu skribi permesojn al ĉi tiu dosiero.

Sed se vi havas problemojn pri tio, vi ĉiam povas malŝalti la rajton-kontrolon en la agordo:

StrictModes no

Cetere, en C:ProgramdosierojOpenSSH estas 2 skriptoj (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), kiuj devus sed ne estas postulataj por ripari la rajtojn, inkluzive kun rajtigitaj_ŝlosiloj, sed ial ili ne riparas ĝin.

Ne forgesu rekomenci la servon ssh post apliki la ŝanĝojn.

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>

Subjektivaj avantaĝoj/malutiloj.

Pros:

  • Norma aliro al konekto al serviloj.
    Kiam estas malmultaj Vindozaj maŝinoj, estas tre maloportune kiam:
    Do, jen ni iras per ssh, kaj jen rdp,
    kaj ĝenerale plej bona praktiko kun bastionoj, unue ssh tunelo, kaj tra ĝi RDP.
  • Facileco de agordo
    Mi pensas, ke ĝi estas evidente.
  • Rapido de konekto kaj laboro kun fora maŝino
    Ne ekzistas grafika ŝelo, ambaŭ servilaj rimedoj kaj la kvanto de transdonitaj datumoj estas konservitaj.

Kons:

  • Ne tute anstataŭigas RDP.
    Ne ĉio povas esti farita de la konzolo, ve. Mi volas diri situaciojn kie GUI estas bezonata.

Materialoj uzataj en la artikolo:
Ligo al la projekto mem
Instalaj opcioj senhonte kopiitaj de Ansible-dokumentoj.

fonto: www.habr.com

Aldoni komenton