Setup PowerShell SSH Remoting dans PowerShell 6

Avec PowerShell version 6, Microsoft a introduit PowerShell Remoting sur SSH, qui permet un véritable remoting PowerShell multiplateforme entre Linux, macOS et Windows. PowerShell SSH Remoting crée un processus hôte PowerShell sur la machine cible en tant que sous-système SSH. Normalement, le remoting PowerShell utilise WinRM pour la négociation de la connexion et le transport des données, cependant WinRM n’est disponible que sur les machines basées sur Windows.

Il présente également quelques inconvénients. Le remoting basé sur SSH ne prend pas actuellement en charge la configuration des points d’extrémité distants et JEA (Just Enough Administration). Il est également important de comprendre, que ce n’est pas juste un autre client PowerShell SSH.

Utiliser le transport SSH avec PowerShell Remoting

Pour utiliser PowerShell remoting avec SSH, vous pouvez utiliser les mêmes cmdlets, vous connaissez de PowerShell remoting avec WinRM.

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

Il y a 3 nouveaux paramètres pour ces cmdlets, si vous utilisez le remoting PowerShell SSH.

  • -HostName (Au lieu de -Computername, vous définissez la cible SSH)
  • -UserName (Au lieu de -Credentials, vous utilisez le paramètre -UserName)
  • -KeyFilePath (Si vous utilisez l’authentification par clé SSH, vous pouvez utiliser le paramètre -.KeyFilePath pour pointer vers le fichier de clé)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

Configurer le remoting PowerShell SSH

Pour travailler avec PowerShell SSH, vous devrez effectuer les étapes suivantes sur tous les systèmes et machines.

  • Installer OpenSSH Server et Client
    • OpenSSH pour Windows est disponible directement dans Windows 10 (1809) et Windows Server 2019 en tant que fonctionnalité optionnelle.
    • Sur Linux, vous installez OpenSSH en fonction de votre plateforme
  • Installer PowerShell 6 sur tous les systèmes
  • Configurer le sous-système SSH pour héberger un processus PowerShell sur la machine distante
  • Configurer l’authentification par mot de passe ou par clé

Configuration pas à pas du remoting SSH sur Windows

Étape 1 : Tout d’abord, vous devrez installer PowerShell 6 sur Windows. Vous pouvez suivre mon article de blog pour installer facilement PowerShell 6.

Installer PowerShell 6

Etape 2 : Installer le client OpenSSH et le serveur Open SSH. Pour installer le client et le serveur et configurer initialement le serveur OpenSSH, vous pouvez utiliser la commande suivante.

 # 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

Étape 2.1 : Comme il y a actuellement un bug dans OpenSSH pour Windows, le chemin n’accepte pas les espaces. Vous devez créer un lien symbolique vers un répertoire sans espaces. Exécutez la commande suivante sur le système cible.

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

Étape 3 : Configurez et éditez le fichier sshd_config situé dans $env:ProgramData\ssh sur la machine cible.

Éditer sshd_config

Vérifier que l’authentification par mot de passe est activée

PasswordAuthentication yes

Ajouter le sous-système pour PowerShell

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

Optionnellement activer l’authentification par clé

PubkeyAuthentication yes

Si vous êtes intéressé par la configuration de l’authentification basée sur la clé avec OpenSSH sur Windows Server, consultez l’article de blog sur ITOpstalk.com par Orin Thomas (Microsoft Cloud Advocate).

Etape 4 : Redémarrer le service sshd

 Restart-Service sshd

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

Etape 1 : Vous devez d’abord installer PowerShell 6 sur Linux. Vous pouvez suivre mon article de blog pour installer facilement PowerShell 6.

Installer PowerShell 6 Linux

Étape 2 : Installer le client OpenSSH et le serveur Open SSH. Pour installer le client et le serveur et configurer initialement le serveur OpenSSH, vous pouvez utiliser les commandes suivantes.

sudo apt install openssh-clientsudo apt install openssh-server

Étape 3 : Configurer et modifier le fichier sshd_config à l’emplacement /etc/ssh sur la machine cible.

Vérifier que l’authentification par mot de passe est activée

PasswordAuthentication yes

Ajouter le sous-système pour PowerShell

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

Optionnellement activer l’authentification par clé

PubkeyAuthentication yes

Étape 4 : Redémarrez le service sshd

 sudo service sshd restart

Remoting SSH avec PowerShell 6

Maintenant vous pouvez commencer à utiliser le remoting SSH de PowerShell pour vous connecter même à partir de différents systèmes d’exploitation comme Windows vers Linux ou Linux vers Windows. PowerShell 6 SSH Remoting

Comme mentionné précédemment, vous pouvez utiliser les mêmes commandes que vous connaissez comme New-PSSession, Enter-PSSession ou Invoke-Command.

PowerShell SSH Remoting Linux to Windows

En tant que client, vous pouvez également utiliser le Azure Cloud Shell, qui exécute PowerShell 6

Bien sûr, vous pouvez également utiliser le PowerShell SSH remoting pour vous connecter de Linux à Linux et de Windows à Windows. Vous pouvez trouver plus d’informations sur le remoting SSH PowerShell sur les pages Microsoft Docs. Si vous avez des questions, faites-le moi savoir dans les commentaires.

Tags : Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell over SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Dernière modification : 4 avril 2019

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.