Windows-ին միանալը Linux-ի նման SSH-ի միջոցով

Ես միշտ հիասթափվել եմ Windows-ի մեքենաներին միանալուց: Ոչ, ես Microsoft-ի և նրանց արտադրանքի ոչ հակառակորդն եմ, ոչ էլ կողմնակիցը։ Յուրաքանչյուր ապրանք գոյություն ունի իր նպատակի համար, բայց դա այն չէ, ինչի մասին է խոսքը:
Ինձ համար միշտ շատ ցավալի է եղել Windows սերվերներին միանալը, քանի որ այս կապերը կա՛մ կազմաձևված են մեկ վայրում (բարև WinRM HTTPS-ով), կա՛մ շատ կայուն չեն աշխատում (բարև RDP արտասահմանյան վիրտուալ մեքենաներին):

Հետևաբար, պատահաբար հանդիպելով նախագծին Win32-OpenSSH, ես որոշեցի կիսվել իմ տեղադրման փորձով: Թերևս այս գործիքը ինչ-որ մեկին շատ նյարդեր կփրկի:

Windows-ին միանալը Linux-ի նման SSH-ի միջոցով

Տեղադրման ընտրանքներ.

  1. Ձեռքով
  2. Միջոցով փաթեթը Chocolatey- ը
  3. Ansible-ի միջոցով, օրինակ՝ դեր jborean93.win_openssh

Հաջորդը կխոսեմ առաջին կետի մասին, քանի որ մնացածի հետ ամեն ինչ քիչ թե շատ պարզ է։

Նշեմ, որ այս նախագիծը դեռ բետա փուլում է, ուստի խորհուրդ չի տրվում օգտագործել այն արտադրության մեջ։

Այսպիսով, ներբեռնեք վերջին թողարկումը, որն այս պահին կա 7.9.0.0p1-բետա. Կան տարբերակներ և՛ 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

Պարզաբանում՝ ապլեթ Նոր-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: Ծրագրի տվյալները. Օրինակ `

PasswordAuthentication no
PubkeyAuthentication yes

Եվ օգտագործողի թղթապանակում ստեղծեք գրացուցակ .շշ, և դրա մեջ ֆայլը autorized_keys. Մենք այնտեղ գրում ենք հանրային բանալիները:

Կարևոր պարզաբանում. միայն այն օգտվողը, ում գրացուցակում գտնվում է ֆայլը, պետք է իրավունք ունենա գրել այս ֆայլին:

Բայց եթե դրա հետ կապված խնդիրներ ունեք, միշտ կարող եք անջատել իրավունքների ստուգումը կազմաձևում.

StrictModes no

Ի դեպ, ներս C: Program FilesOpenSSH կա 2 սցենար (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), որոնք պետք է, բայց պարտավոր չեն ամրագրել իրավունքները, այդ թվում՝ հետ autorized_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-ի միջոցով, և այստեղ մենք օգտագործում ենք rdp,
    և ընդհանրապես, բաստիոնների հետ կապված լավագույն պրակտիկան նախ ssh թունելն է, և դրա միջով RDP-ն:
  • Կարգավորման հեշտություն
    Սա, կարծում եմ, ակնհայտ է։
  • Միացման արագությունը և հեռակառավարվող մեքենայի հետ աշխատելը
    Չկա գրաֆիկական վահանակ, որը խնայում է ինչպես սերվերի ռեսուրսները, այնպես էլ փոխանցված տվյալների քանակը:

Դեմ:

  • Ամբողջովին չի փոխարինում RDP-ին:
    Ամեն ինչ չէ, որ կարելի է անել կոնսոլից, ավաղ։ Ես նկատի ունեմ այն ​​իրավիճակները, որտեղ անհրաժեշտ է GUI:

Հոդվածում օգտագործված նյութեր.
Հղում հենց նախագծին
Տեղադրման տարբերակները անամոթաբար պատճենված են Անսպասելի փաստաթղթեր.

Source: www.habr.com

Добавить комментарий