Setup PowerShell SSH Remoting in PowerShell 6

Con la versione 6 di PowerShell, Microsoft ha introdotto PowerShell Remoting su SSH, che permette un vero remoting PowerShell multipiattaforma tra Linux, macOS e Windows. PowerShell SSH Remoting crea un processo host PowerShell sulla macchina di destinazione come sottosistema SSH. Normalmente, PowerShell remoting usa WinRM per la negoziazione della connessione e il trasporto dei dati, tuttavia WinRM è disponibile solo su macchine basate su Windows.

Ci sono anche alcuni lati negativi. Il remoting basato su SSH attualmente non supporta la configurazione dell’endpoint remoto e JEA (Just Enough Administration). È anche importante capire che questo non è solo un altro client SSH di PowerShell.

Utilizzare il trasporto SSH con PowerShell Remoting

Per usare PowerShell remoting con SSH puoi usare le stesse cmdlets, che conosci da PowerShell remoting con WinRM.

  • New-PSSession
  • Enter-PSSession
  • Invoke-Command

Ci sono 3 nuovi parametri per queste cmdlets, se stai usando PowerShell SSH remoting.

  • -HostName (Invece di -Computername, definite la destinazione SSH)
  • -UserName (invece di -Credentials usate il parametro -UserName)
  • -KeyFilePath (se state usando l’autenticazione con chiave SSH potete usare il parametro -KeyFilePath per puntare al file delle chiavi)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

Setup PowerShell SSH Remoting

Per lavorare con PowerShell SSH, è necessario completare i seguenti passi su tutti i sistemi e le macchine.

  • Installare OpenSSH Server e Client
    • OpenSSH per Windows è disponibile direttamente in Windows 10 (1809) e Windows Server 2019 come funzionalità opzionale.
    • Su Linux si installa OpenSSH a seconda della piattaforma
  • Installa PowerShell 6 su tutti i sistemi
  • Configura il sottosistema SSH per ospitare un processo PowerShell sulla macchina remota
  • Configura l’autenticazione basata su password o chiave

Step by step setup SSH remoting su Windows

Step 1: Per prima cosa è necessario installare PowerShell 6 su Windows. Puoi seguire il mio post sul blog per installare facilmente PowerShell 6.

Installa PowerShell 6

Step 2: Installa OpenSSH Client e Open SSH Server. Per installare client e server e configurare inizialmente il server OpenSSH, puoi usare il seguente comando.

 # Install the OpenSSH Client and Server Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Initial Configuration of SSH Server Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # Confirm the Firewall rule is configured. It should be created automatically by setup. Get-NetFirewallRule -Name *ssh* # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled

Step 2.1: Poiché attualmente c’è un bug in OpenSSH per Windows, il percorso non accetta spazi. È necessario creare un collegamento simbolico a una directory senza spazi. Esegui il seguente comando sul sistema di destinazione.

 mklink /D c:\pwsh "C:\Program Files\PowerShell"

Step 3: Configura e modifica il file sshd_config situato in $env:ProgramData\ssh sulla macchina di destinazione.

Modifica sshd_config

Controlla che l’autenticazione con password sia abilitata

PasswordAuthentication yes

Aggiungi il sottosistema per PowerShell

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

Opzionale abilita l’autenticazione a chiave

PubkeyAuthentication yes

Se sei interessato a configurare l’autenticazione a chiave con OpenSSH su Windows Server, controlla il post sul blog ITOpstalk.com di Orin Thomas (Microsoft Cloud Advocate).

Passo 4: Riavviare il servizio sshd

 Restart-Service sshd

Step by step Setup SSH remoting on Linux (Ubuntu 18.04)

Passo 1: Per prima cosa è necessario installare PowerShell 6 su Linux. Puoi seguire il mio post sul blog per installare facilmente PowerShell 6.

Installare PowerShell 6 Linux

Step 2: Installare OpenSSH Client e Open SSH Server. Per installare client e server e configurare inizialmente il server OpenSSH, puoi usare i seguenti comandi.

sudo apt install openssh-clientsudo apt install openssh-server

Step 3: Configura e modifica il file sshd_config nella posizione /etc/ssh sulla macchina di destinazione.

Controlla che l’autenticazione con password sia abilitata

PasswordAuthentication yes

Aggiungi il sottosistema per PowerShell

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Opzionale abilita l’autenticazione con chiave

PubkeyAuthentication yes

Step 4: Riavvia il servizio sshd

 sudo service sshd restart

Remoto SSH con PowerShell 6

Ora puoi iniziare ad usare PowerShell SSH remoting per connetterti anche da diversi sistemi operativi come Windows a Linux o Linux a Windows. PowerShell 6 SSH Remoting

Come detto prima, puoi usare gli stessi comandi che ti sono familiari come New-PSSession, Enter-PSSession o Invoke-Command.

PowerShell SSH Remoting Linux to Windows

Come client puoi anche usare Azure Cloud Shell, che esegue PowerShell 6

Ovviamente, puoi anche usare PowerShell SSH remoting per collegarti da Linux a Linux e da Windows a Windows. Puoi trovare maggiori informazioni su PowerShell SSH remoting sulle pagine di Microsoft Docs. Se avete domande, fatemelo sapere nei commenti.

Tag: Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell su SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Ultima modifica: 4 aprile 2019

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.