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.
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.
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.
É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.
Comme mentionné précédemment, vous pouvez utiliser les mêmes commandes que vous connaissez comme New-PSSession, Enter-PSSession ou Invoke-Command.
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