Opi perustamaan ja käyttämään PowerShell SSH remoting

kun Microsoft sanoi, että Powershellista tulisi avoimen lähdekoodin projekti, joka toimisi Windowsilla, Linuxilla ja macOS: lla elokuussa 2016, PowerShellin remotointiin liittyi mielenkiintoinen ryppy.

Microsoft sanoi, että tämä PowerShell-ydin tukisi Remoting over Secure Shell (SSH) sekä Web Services-Management (ws-MAN). Voit aina käyttää PowerShell SSH-binäärejä, mutta ilmoitus osoitti SSH-tuen olevan olennainen osa Powershellia. Tämä avasi mahdollisuuden suorittaa Windows-ja Linux-järjestelmien etähallinta helposti samoilla tekniikoilla.

lyhyt historia PowerShell remoting

Microsoft esitteli remoting in PowerShell version 2.0 Windows 7: ssä ja Windows Server 2008 R2: ssa, mikä muutti dramaattisesti maisemaa Windows-järjestelmänvalvojille. He pystyivät luomaan etätyöpöytäistuntoja palvelimille, mutta PowerShell-remotointi mahdollisti suurten palvelinmäärien hallinnan samanaikaisesti.

Remotointi Windows Powershellissa perustuu ws-Maniin, joka on avoin standardi Distributed Management Task Forcelta. Mutta koska WS-MAN-pohjainen remotointi on Windows suuntautunut, sinun piti käyttää toista teknologiaa, yleensä SSH, hallinnoida Linux-järjestelmiä.

esittelee SSH: n PowerShell-ytimessä

olemme tottuneet asentamaan ohjelmistoja Windowsiin Wizardsin avulla, mutta OpenSSH: n asennus vaatii enemmän taustatietoja ja lisää työtä ylläpitäjältä.

SSH on protokolla järjestelmien hallintaan mahdollisesti suojaamattomassa verkossa. SSH toimii asiakas-palvelin-tilassa ja on de facto standardi Etähallinnalle Linux-ympäristöissä.

PowerShell Core käyttää OPENSSHIA, SSH 1.2.12: n haarukkaa, joka julkaistiin avoimen lähdekoodin lisenssillä. OpenSSH lienee suosituin SSH-toteutus.

ws-MAN remotingin käyttämiseen tarvittava koodi on asennettu osaksi Windows-käyttöjärjestelmää. OpenSSH on asennettava manuaalisesti.

Opensshin asentaminen

olemme tottuneet asentamaan ohjelmistoja Windowsiin velhojen avulla, mutta Opensshin asennus vaatii enemmän taustatietoja ja lisää työtä ylläpitäjältä. Ilman manuaalista väliintuloa voi syntyä monia ongelmia.

Opensshin asennusprosessi Windowsissa on parantunut ajan myötä, mutta se ei ole vieläkään niin helppoa kuin sen pitäisi olla. Asetustiedoston kanssa työskentely jättää paljon toivomisen varaa.

PowerShell SSH: n asennuksessa on kaksi vaihtoehtoa:

  1. Windows 10 1809, Windows Server 1809, Windows Server 2019 ja myöhemmin OpenSSH on saatavilla valinnaisena ominaisuutena.
  2. aiemmissa Windows-versioissa Opensshin voi ladata ja asentaa GitHubista.

varmista, että järjestelmässäsi on uusimmat laastarit ennen Opensshin asentamista.

OpenSSH valinnaisen ominaisuuden asentaminen

voit asentaa OpenSSH valinnaisen ominaisuuden Powershellissa. Tarkista ensin järjestelmäsi seuraavalla komennolla:

Get-WindowsCapability -Online | where Name -like '*SSH*'
OpenSSH components
Kuva 1. Etsi OpenSSH komponentit järjestelmästäsi.

Kuvan 1 mukaan OpenSSH-asiakasohjelmisto on esiasennettu.

sinun täytyy käyttää Windows Powershellia asennukseen, ellet lataa Windowscompatibility-moduulia PowerShell-ytimelle. Sitten voit tuoda käyttöönoton Kuvanhoito-ja Hallintamoduulin Windows Powershellista ja suorittaa komennot PowerShell-ytimessä.

Asenna palvelimen ominaisuus:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Path :
Online : True
RestartNeeded : False

SSH-tiedostot asennetaan C:\Windows\System32\OpenSSH kansio.

Lataa OpenSSH GitHubista

Aloita lataamalla uusin versio Githubista. Asennusohjeiden uusin versio löytyy tästä linkistä.

kun lataus on valmis, pura zip-tiedosto C:\Program tiedostot\OpenSSH kansio. Vaihda sijaintiin C:\Program tiedostot\OpenSSH SSH-palvelujen asentamiseksi:

.\install-sshd.ps1
SetServiceObjectSecurity SUCCESS
ChangeServiceConfig2 SUCCESS
ChangeServiceConfig2 SUCCESS

konfigurointi OpenSSH

OpenSSH-asennuksen jälkeen suoritetaan joitakin lisäasetusvaiheita.

varmista, että OpenSSH-kansio on mukana järjestelmäpolun ympäristömuuttujassa:

  • C:\Windows\System32\OpenSSH\ jos asennettu Windowsin valinnaisena ominaisuutena
  • C:\Program tiedostot\OpenSSH\ jos asennettu OpenSSH download

aseta kaksi palvelua käynnistymään automaattisesti:

Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic

Jos olet asentanut opensshin valinnaisella toiminnolla, Windows luo uuden palomuurisäännön, joka sallii SSH: n saapuvan käytön portin 22 kautta. Jos asensit opensshin latauksesta, luo palomuurisääntö tällä komennolla:

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

Käynnistä sshd-palvelu SSH-avainten luomiseksi:

Start-Service sshd

SSH-avaimet ja asetustiedosto sijaitsevat C:\ProgramData\ssh, joka on piilotettu kansio. SSH: n käyttämä oletusarvoinen komentotulkki on Windowsin komentotulkki. Tämä on vaihdettava Powershelliin:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell `
-Value "C:\Program Files\PowerShell\6\pwsh.exe" -PropertyType String -Force

nyt, kun muodostat yhteyden järjestelmään SSH: n kautta, PowerShell-ydin käynnistyy ja on oletuksena komentotulkki. Voit myös tehdä oletuksena shell Windows PowerShell jos haluat.

Opensshissa on bugi Windowsissa. Se ei toimi poluilla, joilla on tilaa, kuten PowerShell Core-suoritustiedoston polku! Workaround on luoda symbolinen linkki, joka luo polun, jota OpenSSH voi käyttää:

New-Item -ItemType SymbolicLink -Path C:\pwsh -Target 'C:\Program Files\PowerShell\6'

sshd_config-tiedostossa un-comment seuraavat rivit:

PubkeyAuthentication yes
PasswordAuthentication yes

Lisää tämä rivi ennen muita alijärjestelmärivejä:

Subsystem powershell C:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

Tämä kertoo Opensshin suorittavan PowerShell-ytimen.

kommentoi rivi:

AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

kun olet tallentanut sshd_config-tiedostoon tehdyt muutokset, käynnistä palvelut uudelleen:

Restart-Service sshd
Start-Service ssh-agent

sinun täytyy käynnistää sshd-palvelu uudelleen asetustiedostoon tehtyjen muutosten jälkeen.

PowerShell SSH remotingin käyttäminen

SSH: n remotoinnin käyttäminen on hyvin samanlaista kuin WS-MAN: n remotoinnin käyttäminen. Voit käyttää etäjärjestelmää suoraan Invoke-komennolla:

Invoke-Command -HostName W19DC01 -ScriptBlock {Get-Process}
richard@MANTICORE@w19dc01's password:

saat salasanalle kehotuksen, joka ei tule näkyviin sitä kirjoittaessasi.

Jos olet ensimmäistä kertaa yhteydessä etäjärjestelmään SSH: n kautta, näet samanlaisen viestin:

The authenticity of host 'servername (10.00.00.001)' can't be established.
ECDSA key fingerprint is SHA256:(<a large string>).
Are you sure you want to continue connecting (yes/no)?

Kirjoita Kyllä ja paina Enter.

voit luoda remotointisession:

$sshs = New-PSSession -HostName W19FS01
richard@MANTICORE@w19fs01's password:

ja sitten käyttää sitä:

Invoke-Command -Session $sshs -ScriptBlock {$env:COMPUTERNAME}
W19FS01

voit syöttää OpenSSH-remotointisession Enter-PSSession avulla samalla tavalla kuin WS-MAN-session. Voit syöttää olemassa olevan istunnon tai käyttää HostName-parametria Enter-Pssessiossa interaktiivisen istunnon luomiseen.

SSH-pohjaista istuntoa ei voi katkaista; se on WS-MAN-tekniikka.

voit käyttää WS-MAN-ja SSH-istuntoja useiden tietokoneiden hallintaan Kuvan 2 mukaisesti.

istunnon tiedot osoittavat eri kuljetusmekanismin — WS-MAN ja SSH, vastaavasti — ja kunkin istunnon käyttämän päätepisteen.

kuva 2. Käytä ws-MAN-ja SSH-istuntoja yhdessä etäkoneiden hallintaan.

Jos katsot tarkkaan kuvaa 2, huomaat, ettei SSH-istunnossa ollut salasanaa koskevaa kehotusta, koska järjestelmä oli perustettu SSH-avainpohjaisella todennuksella.

käyttämällä SSH-avainpohjaista todennusta

avaa kohonnut PowerShell-istunto. Vaihda sijainti .ssh-kansio käyttäjäalueellasi:

Set-Location -Path ~\.ssh

luo avainpari:

ssh-keygen -t ed25519

Lisää avaintiedosto paikallisen koneen SSH-agenttiin:

ssh-add id_ed25519

kun olet lisännyt yksityisen avaimen SSH-agenttiin, varmuuskopioi yksityinen avain turvalliseen paikkaan ja poista avain paikalliselta koneelta.

Kopioi tunnus_ed25519.pub tiedosto .ssh-kansio etäpalvelimen vastaavalle käyttäjätilille. Voit luoda tällaisen tilin tarvittaessa:

$pwd = Read-Host -Prompt 'Password' -AsSecureString
Password: ********
New-LocalUser -Name Richard -Password $pwd -PasswordNeverExpires
Add-LocalGroupMember -Group Administrators -Member Richard

etäkoneella, kopioi avaintiedoston sisältö authorized_keys-tiedostoon:

scp id_ed25519.pub authorized_keys

authorized_keys-tiedosto tarvitsee käyttöoikeuksiensa muuttamista:

  • Avaa File Explorer, napsauta hiiren kakkospainikkeella authorized_keys ja siirry kohtaan Properties – Security – Advanced
  • Valitse Poista perintö käytöstä.
  • valitse Muunna perityt käyttöoikeudet tämän objektin eksplisiittisiksi käyttöoikeuksiksi.
  • Poista kaikki käyttöoikeudet paitsi järjestelmä ja käyttäjätili. Molemmilla pitäisi olla täysi kontrolli.
Introduction to SSH with PowerShell Core.

näet viittauksia opensshutils-moduulin käyttämiseen käyttöoikeuksien asettamiseen, mutta PowerShell-gallerian versiossa on vika, joka tekee authorized_keys-tiedoston käyttökelvottomaksi.

Käynnistä sshd-palvelu uudelleen etäkoneessa.

voit nyt muodostaa yhteyden etäkoneeseen ilman salasanaa, kuten kuvassa 2 on esitetty.

Jos muodostat yhteyden toimialueen ulkopuoliseen koneeseen toimialueen koneesta, sinun on käytettävä Käyttäjätunnusparametria sen jälkeen, kun olet ottanut avainparin todennuksen käyttöön:

$ss = New-PSSession -HostName W19ND01 -UserName Richard

tarvitset etäkoneen käyttäjätunnuksen vastaamaan verkkotunnuksesi käyttäjätunnusta. Sinulta ei kysytä salasanaa.

WS-MAN tai SSH remoting?

pitäisikö sinun käyttää WS-MAN-tai SSH-pohjaista remotointia? WS-MAN remoting on käytettävissä kaikissa Windows-järjestelmissä ja se on oletusarvoisesti käytössä Windows Server 2012: ssa ja uudemmissa palvelinversioissa. WS-MAN remoting on joitakin kysymyksiä, erityisesti double hop kysymys. WS-MAN tarvitsee myös ylimääräistä työtä etänä ei-domain järjestelmiä.

SSH remoting on saatavilla vain PowerShell-ytimessä; Windows PowerShell on rajoitettu WS-MAN remotointiin. SSH remotingin asentaminen ja määrittäminen vaatii huomattavan määrän työtä. Dokumentaatio ei ole niin hyvä kuin sen pitäisi olla. SSH remoting edut ovat, että voit helposti käyttää ei-domain koneita ja ei-Windows-järjestelmiä, joissa SSH on standardi etäkäyttö.

Vastaa

Sähköpostiosoitettasi ei julkaista.