Opi perustamaan ja käyttämään PowerShell SSH remoting
Posted on
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.
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:
Windows 10 1809, Windows Server 1809, Windows Server 2019 ja myöhemmin OpenSSH on saatavilla valinnaisena ominaisuutena.
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*'
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ä.
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:
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:
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ää:
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)?
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.
$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ö.