Difference between revisions of "Lab/Windows Server 2022-ssh"

From Slaskete wiki
Jump to navigation Jump to search
(Created page with "Det har blitt ganske enkelt å sette opp SSH på Windows Server slik at man kan utføre driftsoppgaver fra f.eks. Linux. Dette er spesielt fint hvis man kjører Core. === Ins...")
 
 
(3 intermediate revisions by the same user not shown)
Line 17: Line 17:
   
 
=== Sett opp PowerShell-sesjon i sshd ===
 
=== Sett opp PowerShell-sesjon i sshd ===
Komplette instruksjoner ligger hos [https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration Microsoft her].
+
Komplette instruksjoner ligger hos [https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration Microsoft]
   
  +
Sett opp en register-nøkkel som gjør det innebygde PowerShell-et til default-shell:
For dette steget bruker vi notepad, så enten må du bruke UNC-path //server/c$/ProgramData/ssh/ fra en Windows-maskin med GUI eller så må du bruke den interaktive sesjonen (lokalt konsoll) på serveren. Her demonstreres sistnevnte.
 
  +
  +
<code>New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force</code>
  +
  +
=== Bonus: Installer nyeste PowerShell slik at PowerShell-remoting fungerer fra Linux sin PowerShell også ===
  +
Komplette instruksjoner ligger hos [https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows Microsoft her] og [https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration her]. OBS: det er stor sannsynlighet for at det har kommet nyere PowerShell siden sist.
  +
 
For dette steget bruker vi notepad, så enten må du bruke UNC-path <code>//server/c$/ProgramData/ssh/</code> fra en Windows-maskin med GUI eller så må du bruke den interaktive sesjonen (lokalt konsoll) på serveren. Her demonstreres sistnevnte.
   
 
<code>cd $env:ProgramData\ssh</code>
 
<code>cd $env:ProgramData\ssh</code>
Line 32: Line 39:
   
 
<code>Restart-Service sshd</code>
 
<code>Restart-Service sshd</code>
  +
  +
Dette kan du trygt gjøre fra SSH:
  +
  +
<code>cd $env:Home\Downloads</code>
  +
  +
<code>Invoke-WebRequest -Uri "<nowiki>https://github.com/PowerShell/PowerShell/releases/download/v7.3.8/PowerShell-7.3.8-win-x64.msi</nowiki>" -OutFile ".\PowerShell-7.3.8-win-x64.msi"</code>
  +
  +
<code>msiexec.exe /package PowerShell-7.3.8-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1</code>
  +
  +
Etter en kort stund skal det være mulig å bruke PowerShell-remoting også, slik:
  +
  +
<code>Enter-PSSession -HostName server -UserName admin_einar</code>
  +
  +
Mer om PowerShell over SSH hos [https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/ssh-remoting-in-powershell Microsoft her].

Latest revision as of 21:27, 25 October 2023

Det har blitt ganske enkelt å sette opp SSH på Windows Server slik at man kan utføre driftsoppgaver fra f.eks. Linux. Dette er spesielt fint hvis man kjører Core.

Installer SSHD på serveren

Komplette instruksjoner ligger hos Microsoft her. Du må starte fra kommandolinjen/powershell på selve serveren.

Installer OpenSSH Server:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Start tjenesten og sett den til å starte automatisk:

Start-Service sshd

Set-Service -Name sshd -StartupType 'Automatic'

Allerede nå kan du logge inn på serveren akkurat som du skulle forvente. Legg spesielt merke til at serveren faktisk lager et ED25519-sertifikat. Når du logger inn får du en gammeldags BATCH/COMMAND.COM-sesjon. Vi vil ha PowerShell!

Sett opp PowerShell-sesjon i sshd

Komplette instruksjoner ligger hos Microsoft

Sett opp en register-nøkkel som gjør det innebygde PowerShell-et til default-shell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Bonus: Installer nyeste PowerShell slik at PowerShell-remoting fungerer fra Linux sin PowerShell også

Komplette instruksjoner ligger hos Microsoft her og her. OBS: det er stor sannsynlighet for at det har kommet nyere PowerShell siden sist.

For dette steget bruker vi notepad, så enten må du bruke UNC-path //server/c$/ProgramData/ssh/ fra en Windows-maskin med GUI eller så må du bruke den interaktive sesjonen (lokalt konsoll) på serveren. Her demonstreres sistnevnte.

cd $env:ProgramData\ssh

notepad sshd_config

Lim inn følgende linje, for eksempel mot slutten av filen, under Subsystem sftp-linjen:

Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -nologo

Lagre og lukk filen, og start sshd på nytt:

Restart-Service sshd

Dette kan du trygt gjøre fra SSH:

cd $env:Home\Downloads

Invoke-WebRequest -Uri "https://github.com/PowerShell/PowerShell/releases/download/v7.3.8/PowerShell-7.3.8-win-x64.msi" -OutFile ".\PowerShell-7.3.8-win-x64.msi"

msiexec.exe /package PowerShell-7.3.8-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1

Etter en kort stund skal det være mulig å bruke PowerShell-remoting også, slik:

Enter-PSSession -HostName server -UserName admin_einar

Mer om PowerShell over SSH hos Microsoft her.