SSH en PowerShell: Windows SSH-client instellen

Er was eens een tijd waarin je beperkt was in het soort computers waarmee je verbinding kon maken met Windows PowerShell met behulp van PowerShell Remoting. Omdat PowerShell Remoting alleen de WsMan-provider ondersteunde, waren je kansen om bijvoorbeeld verbinding te maken met computers die op Linux draaien, nihil. Terug in 2015 heeft Microsoft ondersteuning geïntroduceerd voor SSH in Windows, wat veel potentieel met zich meebracht en je eindelijk in staat stelde om SSH en PowerShell samen te gebruiken.

In dit artikel gaan we dieper in op hoe je de SSH-client van Windows kunt instellen en hoe je SSH en PowerShell Remoting kunt benutten.

Deze SSH- en PowerShell-post maakt deel uit van de blogserie #PS7Now. Zorg ervoor dat je alle andere bijdragers in deze serie onderaan deze post bekijkt.

Voor je begint

Dit artikel zal een stapsgewijze handleiding zijn. Zorg ervoor dat je aan de volgende vereisten voldoet als je wilt meedoen:

  • Windows 10 – Alle voorbeelden zullen gebruikmaken van Windows 10 Build 1903. Het voorbeeld zal zich in hetzelfde domein bevinden als de externe Windows Server.
  • PowerShell v6+ geïnstalleerd op Windows 10 – Alle voorbeelden zullen gebruikmaken van PowerShell 7 RC2.
  • A remote SSH server – All examples will use a Windows Server SSH machine. If you’re connecting to a Linux machine, you can skip the server setup steps.
  • TCP-poort 22 beschikbaar op de externe server

SSH-client (Windows 10) Setup

Voordat u een PowerShell-console opent, moet u eerst enkele eenmalige taken uitvoeren om SSH en PowerShell samen te laten werken om ervoor te zorgen dat Windows 10 verbinding kan maken met een externe SSH-server.

Voeg de OpenSSH-map toe aan de PATH-omgevingsvariabele

OpenSSH is vooraf geïnstalleerd op Windows 10 maar heeft soms wat hulp nodig om te werken met PowerShell Remoting. Als u bijvoorbeeld al hebt geprobeerd om Enter-PSSession te gebruiken om verbinding te maken met een externe SSH-server en u de onderstaande fout tegenkwam, moet u ervoor zorgen dat het pad naar het OpenSSH-uitvoerbare bestand (ssh.exe) in de PATH omgevingsvariabele staat.

Enter-PSSession : An error has occurred which PowerShell cannot handle. A remote session might have ended.

Om het pad naar de OpenSSH-map toe te voegen aan de PATH-omgevingsvariabele, klik op de Start-knop en zoek naar geavanceerde systeeminstellingen, klik vervolgens op Bekijk geavanceerde systeeminstellingen zoals hieronder wordt weergegeven.

Adding OpenSSH folder path

Wanneer het venster Systeemeigenschappen verschijnt, klik op de knop Omgevingsvariabelen.

Environment Variables in System Properties

In het venster Omgevingsvariabelen, onder Systeemvariabelen, selecteer Pad en klik op Bewerken.

System Variables in the Environment Variables

In het venster Omgevingsvariabele bewerken, klik op Nieuw en voer het pad in waar de uitvoerbare ssh.exe zich bevindt. Voor deze handleiding is het pad C:\Program Files\OpenSSH zoals hieronder weergegeven. Nadat het is ingevoerd, klik tweemaal op OK om de nieuwe waarde op te slaan.

Editing Environment Variable

Specificeer het SSH-subsysteem

Je moet nu het SSH-subsysteem specificeren dat PowerShell moet aanroepen bij het verbinden via SSH op de externe Windows Server. Als je PowerShell niet vertelt welk subsysteem te gebruiken, krijg je onvermijdelijk de volgende foutmelding:

Enter-PSSession : Het achtergrondproces heeft een fout gemeld met de volgende boodschap: De SSH-clientssessie is geëindigd met de foutmelding: verzoek om subsysteem is mislukt op kanaal 0.

Merk op dat als je niet verbonden bent met een Windows Server-machine, je deze stappen niet hoeft uit te voeren.

Op de externe Windows Server, open het bestand C:\ProgramData\ssh\ssh_config. Scroll naar beneden naar de sectie override default of no subsystems van het bestand ssh_config. De sectie zal eruitzien zoals de onderstaande schermafbeelding.

Override Default of no Subsystems

Onder de bestaande regel Subsystem, voeg de PowerShell subsysteem toe met behulp van de volgende regel:

Subsystem	powershell pwsh.exe -sshs -NoLogo -NoProfile

Sla nu het bestand ssh_config op en herstart de sshd Windows-service op de externe Windows-server zoals hieronder weergegeven.

Get-Service -Name sshd | Restart-Service

Zodra de service opnieuw is opgestart, zou je nu in staat moeten zijn om verbinding te maken via SSH en PowerShell.

Verbinding maken via PowerShell en SSH

Nu de configuratie voltooid is, is het tijd om PowerShell Remoting uit te proberen.

Eerst, probeer een interactieve sessie te starten door het cmdlet Enter-PSSession te gebruiken. In tegenstelling tot wat je gewend bent, zul je de ComputerName-parameter niet gebruiken. In plaats daarvan zul je de HostName-parameter gebruiken om de externe computer te specificeren.

Standaard gebruikt PowerShell Remoting nog steeds WsMan. Om de standaard te overschrijven, gebruik je de SSHTransport-parameter om aan te geven dat je via SSH en PowerShell wilt verbinden.

Wanneer je voor de eerste keer probeert te verbinden met een gebruikersnaam en wachtwoord, moet je een SSH-privésleutel aanmaken. Je wordt hierom gevraagd, zoals je hieronder kunt zien. Wanneer je hierom wordt gevraagd, typ ‘y’ om te accepteren.

Creating SSH Private Key

Je wordt vervolgens gevraagd om het wachtwoord van de gebruiker waarmee je momenteel bent ingelogd.

Merk op dat in dit voorbeeld de Windows 10-client en de Windows Server SSH-server zich in hetzelfde Active Directory-domein bevinden. Standaard zal PowerShell Remoting proberen om te verifiëren met de ingelogde gebruiker. U kunt ook de Credential-parameter gebruiken om een andere gebruikersnaam en wachtwoord op te geven.

Na het verstrekken van het wachtwoord zou u dan een vertrouwde PowerShell Remoting-prompt moeten hebben.

Powershell Remoting Prompt

Sluit nu de sessie af met exit en probeer vervolgens New-PSSession uit. Let op dat hieronder bij gebruik van dezelfde HostName– en SSHTransport-parameters als eerder, de Transport nu wordt weergegeven als SSH.

U kunt ook nog steeds WsMan als het transportprotocol gebruiken met de ComputerName-parameter zonder de SSHTransport-parameter te gebruiken.

Het is niet nodig om een gebruikersnaam en wachtwoord voor SSH te gebruiken. U kunt in plaats daarvan een privésleutelbestand gebruiken en de KeyFilePath-parameter gebruiken om de locatie op te geven.

New PSSession Showing up SSH

Vergeet niet om uw open sessies op te schonen met Get-PSSession | Remove-PSSession!

Samenvatting

U zou nu moeten weten hoe u zowel Windows 10 als Windows Server kunt instellen om SSH te gebruiken met PowerShell Remoting. Eenmaal geconfigureerd, is het enige verschil tussen het gebruik van WsMan als transportprotocol en SSH een paar parameters!

Als je meer wilt weten over PowerShell en SSH, zorg ervoor dat je het Microsoft documentatieartikel over PowerShell Remoting over SSH bekijkt.

#PS7Now Contributors

Deze post was onderdeel van een serie over PowerShell 7 door de geweldige bijdragers die je hieronder ziet. Bekijk zeker hun posts en zie waar ze mee bezig zijn op hun blogs!

Author Twitter Blog
Josh King @WindosNZ https://toastit.dev/
Adam Bertram @adbertram https://adamtheautomator.com/
Jonathan Medd @jonathanmedd
Thomas Lee @doctordns https://tfl09.blogspot.com/
Prateek Singh @singhprateik https://ridicurious.com
Dave Carroll @thedavecarroll https://powershell.anovelidea.org/
Dan Franciscus @dan_franciscus https://winsysblog.com/
Jeff Hicks @jeffhicks https://jdhitsolutions.com
Josh Duffney @joshduffney http://duffney.io/
Mike Kanakos @MikeKanakos https://www.networkadm.in/
Tommy Maynard @thetommymaynard https://tommymaynard.com//
#PS7Now Contributors

Source:
https://adamtheautomator.com/powershell-ssh/