Windows-tools voor beheerders en ontwikkelaars
Microsoft sloeg met Windows 10 een nieuwe koers in en probeert niet meer hardnekkig incompatibel te zijn met de Unix-wereld. De nieuwe tools zijn handig voor ontwikkelaars en systeembeheerders – en Raspberry Pi-gebruikers.
Er liep tientallen jaren een diepe kloof door de IT-wereld, Opdrachtprompt, Remote Desktop Protocol en \ in padnamen aan de ene kant, bashshell, ssh en paden met / aan de andere kant. Microsoft hechtte er grote waarde aan om de historische verschillen met de Unix-wereld van Linux en macOS te benadrukken. Die verschillen stammen nog uit de tijd dat Bill Gates persoonlijk mee programmeerde aan Windows.
Maar toen kwam in 2010 Azure op de markt. Microsoft stortte zich in de cloud-business en begon servercapaciteit per uur te verhuren – met groot succes, en voor het grootste deel met Linux als besturingssysteem. Microsofts diepgewortelde Unix-afkeer brokkelde af omdat de verantwoordelijke personen erkenden dat Linux veel gevraagd werd en voor veel servertaken ook de beste keus is. Dat leidde tot de eigenaardige situatie dat Linux-verhuur een van de belangrijkste producten van het bedrijf werd.
Uitgerekend met Windows, tot dan het belangrijkste product van Microsoft, was het echter absoluut geen feest om die diensten te gebruiken. Linux-servers bedien je nu eenmaal niet via het Remote Desktop Protocol (Extern bureaublad), maar met SSH op de commandline. Er moest dus extra software bij als je als Windows-gebruiker in een hybride omgeving wilde ontwikkelen of beheren – velen stapten dan ook over op Macs of Linux-pc’s.
Windows 10 heeft met die beperking korte metten gemaakt. Dat zie je aan kleine details, bijvoorbeeld bij de editor notepad.exe (Kladblok), die plotseling met Linux-regeleindes uit de voeten kan. Maar er ook veel grote veranderingen zijn bijgekomen, waarvan je niet alleen in hybride Windows/Linux-omgevingen profiteert.
TOEGANG OP AFSTAND
Een SSH-client behoort bij een nieuwe Windows 10-installatie ondertussen tot de basisuitrusting. Wanneer je ssh bij Powershell of Opdrachtprompt uitvoert, krijg je de opties van OpenSSH te zien, waaruit blijkt dat die exact hetzelfde werkt als onder Linux. Je maakt verbinding met een Linux- of macOS-machine met geactiveerde SSH via ssh user@host
Na het opbouwen van de verbinding moet je het wachtwoord invullen. Op veel Linux-servers zal het inloggen met een wachtwoord echter verboden zijn, want gewoonlijk gaat het aanmelden daarbij met via een private-key en een public-key. Zo’n sleutelpaar moet je eerst genereren. Windows heeft het programma daarvoor nu ook en dat werkt net als onder Linux: ssh-keygen
De wizard vraagt waar het sleutelpaar opgeslagen moet worden. Standaard komt het in C:\Users\
Een onderdeel van het OpenSSH-pakket in Windows 10 is scp, waarmee je bestanden en mappen van en naar een SSH-server kunt kopiëren. Vergeleken met het voor Windows typische goochelen met SMB-shares is scp erg makkelijk. Een paar voorbeelden: scp test.txt user@host:/opt/test.txt scp -r images user@host:/opt/images scp -r user@host:/opt/images images
Het eerste commando kopieert het bestand test.txt naar de server in de directory /opt/test.txt. Het tweede commando met de parameter -r (recursief) kopieert een hele directory. Met het derde commando wordt de directory van de server naar de lokale machine gekopieerd.
SSH-SERVER
SSH-verbindingen zijn niet alleen in hybride omgevingen nuttig, waarin je met een Unix-tegenpool te maken hebt. Ook van Windows naar Windows kun je daar gebruik van maken – bijvoorbeeld om met scp bestanden van de ene computer naar de andere te kopiëren of om een commandline-sessie op een remote machine te openen. Beide zijn met klassieke Windows-tools niet bepaald eenvoudig. Zowel Windows 10 als de actuele Windows Server 2019 kunnen echter niet alleen als SSH-client, maar ook als SSH-server opereren. Die functie moet je bij beide Windows-varianten wel eerst activeren. Dat gaat het makkelijkst met PowerShell met administratorrechten. Controleer eerst de actuele versie van de SSH-server:
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH.Server*’
Windows vond op het moment van schrijven de versie OpenSSH.Server ~~~~0.0.1.0 . Die installeer je met: Add-WindowsCapability -Online -Name OpenSSH. Server~~~~0.0.1.0
Het installeren neemt maar enkele minuten in beslag, herstarten is niet nodig. Er wordt ook automatisch een regel in de Windows-firewall ingesteld die aanvragen op SSH-poort 22 toestaat. Je start de server met Start-Service sshd
Vervolgens moet je de service zo inrichten dat hij automatisch gestart wordt:
Set-Service -Name sshd -StartupType ‘Automatic’
Om hem uit te proberen, kun je een willekeurige SSHclient in hetzelfde netwerk gebruiken. Dat kan een tweede Windows-pc zijn, een tablet met een SSH-app (die zijn er voor Android en iOS) of een Linux- of macOSmachine. Met ssh user@
Werk je liever met PowerShell, dan kun je de standaard-shell voor SSH-sessies aanpassen. Dat doe je in het Register. Open de Register-editor regedit en ga naar HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH. Maak een nieuwe tekenreekswaarde aan met de naam
DefaultShell en zet daar het pad naar PowerShell in:
C:\Windows\System32\WindowsPowerShell\v1.0\ powershell.exe
Om de verandering toe te passen is geen reboot nodig. Bij de volgende SSH-sessie krijg je dan meteen PowerShell.
TOEGANGSREGELS
Zonder verdere configuratie kan nu ieder lid van de groep administrators zich met zijn wachtwoord aanmelden. Om dat aan te passen, hoef je geen registersleutels aan te passen, maar alleen het bestand sshd_config – OpenSSH is vrijwel compleet uit de Linux-wereld overgenomen. Om dat bestand te editen, moet je het met administratorrechten in een teksteditor openen. Het makkelijkste gaat dat met een Opdrachtprompt met administratorrechten: notepad %programdata%\ssh\sshd_config
Linux-gebruikers zal dat bestand bekend voorkomen. Om in te stellen wie zich via SSH op de machine mag aanmelden, ga je naar het einde van het bestand. Daar is met Match Group administrators al vastgelegd dat leden van die groep zich mogen aanmelden. Vóór die regel kun je bijvoorbeeld een extra gebruiker
toestemming geven:
Match User een-gebruikersnaam Match Group administrators
Het beste kun je de regel daaronder verwijderen – hij zet de sleutels van alle adminstrators in een bestand bij elkaar en dat veroorzaakte bij onze pogingen problemen als je je met sleutels in plaats van een wachtwoord wilde aanmelden.
Na een herstart van de service ‘OpenSSH SSH Server’, die je via de grafische interface voor services in gang zet of in PowerShell uitvoert (Restart-Service sshd), heeft de extra gebruiker toestemming om zich aan te melden.
Om scp te gebruiken, hoef je niets aan te passen. Als de SSH-server draait en je je mag aanmelden, kun je ook bestanden en mappen via scp naar Windowsmachines kopiëren en omgekeerd – ook dat werkt vanaf alle clientsystemen die scp kennen. Maar de bestandsrechten van het Windows-bestandssysteem blijven gewoon gelden. Als gewone gebruiker mag je je vooral in je persoonlijke mappen vrij bewegen.
Ook het aanmelden op een Windows-SSH-server werkt zonder wachtwoord via een private/public-key sleutelpaar. Maak in de persoonlijke profielmap van de gebruiker, die zich via een sleutel moet aanmelden, in de verborgen map .ssh gewoon het bestand authorized_keys aan en zet daar de public-key in. Een herstart van de server is niet nodig. Je kunt je dan vanaf een client (onafhankelijk van het besturingssysteem) waarop de private-key staat aanmelden. Als je wilt afdwingen dat alle gebruikers zich met een sleutel en niet met een wachtwoord aanmelden, vind je in het bestand sshd_conf ongeveer in het midden de volgende regel: # PasswordAuthentication yes
Vervang die door:
PasswordAuthentication no
Wanneer je ssh en scp wilt gebruiken om via een script of ingepland commando een andere Windowsmachine te benaderen, kun je het beste een sleutelpaar zonder extra wachtwoordbeveiliging genereren.
COMMANDLINE-MANAGER
In dit artikel kwamen beide Windows-commandlineprogramma’s al aan de beurt. Het verschil zit in de details. Zo kun je met Opdrachtprompt omgevingsvariabelen als %programdata% gebruiken door ze tussen % te zetten. PowerShell werkt met de syntaxis $Env:programdata. Beide hebben hun bestaansrecht. Als je vaker tussen de shells wisselt en daarbij ook regelmatig via SSH andere machines benadert, is Microsofts nieuwe programma ‘Windows Terminal’ een blik waard. Die staat in de Microsoft Store, wat in eerste instantie vreemd lijkt, maar Microsoft gebruikt de Store tegenwoordig steeds vaker om zich uit het eigen keurslijf van een grote onderneming te bevrijden. Tot nu toe kreeg Windows 10 elke zes maanden nieuwe functies in het kader van een grote update. Iedere nieuwe functie moest grondig op onvoorziene problemen getest worden – en toch doken er in het verleden steeds weer problemen op ten gevolge van het slecht testen van vernieuwingen.
Voor veel systeembeheerders kwamen die halfjaarlijkse updates veel te snel, terwijl gebruikers van toepassingen die continu doorontwikkeld worden, zes maanden veel te lang vonden. De nieuwe strategie doet aan beide doelgroepen recht en heeft de potentie veel frustratie te voorkomen. Windows Terminal wordt als opensourceproject ontwikkeld en krijgt er bijna wekelijks kleinigheden bij. Om het uit de Store te downloaden hoef je je daar niet aan te melden, zoek gewoon op ‘Windows Terminal’.
Bij de eerste keer opstarten kom je in een PowerShell-sessie. Met de toetsencombinatie Ctrl+komma open je het bestand waar de instellingen in staan. Dat is een JSON-object. Daarin kun je de Terminal aan je eigen wensen aanpassen. Het is bijvoorbeeld handig om veelgebruikte SSH-verbindingen in een profiel op te slaan, zodat je ze met een klik of knopdruk kunt oproepen. Zoek daarvoor in het bestand naar het gedeelte
"list": onder "profiles":. Voeg daar onderaan een extra item toe, bijvoorbeeld voor SSH-sessies op de Pi: {
"name": "mijn Raspberry Pi", "tabTitle": "mijn Pi", "commandline": "ssh pi@raspberrypi.local", "foreground": "#00538F", "background": "#FFFFFF"
},
Bij de link op de volgende pagina staat documentatie die alle instelmogelijkheden beschrijft. Behalve kleurprofielen, achtergrondafbeeldingen en toetsencombinaties zijn er nog veel meer instellingen voor ieder profiel. Na het opslaan van het bestand, vind je boven in het pull-downmenu naast de tabbladen de nieuwe optie ‘mijn Raspberry Pi’. Met een klik of de toetsencombinatie Ctrl+Shift+4 maak je een nieuw tabblad aan met deze verbinding.
Je kunt bijna alles in de Terminal via toetsen bedienen. Alt+Shift+plus verdeelt het venster horizontaal in twee helften, zogenaamde panes. Alt+Shift+D verdeelt het verticaal in twee panes. Met Ctrl+Shift+W sluit je het actieve pane. Met Alt en de pijltjestoetsen navigeer je