Le terminal PowerShell sous Windows permet de gérer des serveurs à distance via SSH de manière sécurisée et native. Cette intégration simplifie la gestion de serveurs et l’automatisation des tâches via la ligne de commande.
Avant toute manipulation, vérifiez la version de PowerShell installée et la présence d’OpenSSH. Les points essentiels ci-dessous synthétisent les bénéfices pour la sécurité, la gestion et l’administration à distance.
A retenir :
- Support multiplateforme pour Windows, Linux, macOS et périphériques réseau
- Authentification par clé publique pour une sécurité renforcée
- Automatisation via scripts PowerShell et lignes de commande
- Aucun logiciel externe requis pour la plupart des usages
Fort de ces points, installer et configurer OpenSSH sur Windows pour PowerShell SSH
Installer OpenSSH Server et client sur Windows
Ce passage détaille l’installation du client et du serveur OpenSSH sous Windows. Exécutez les commandes PowerShell en mode administrateur pour ajouter la fonctionnalité.
Start-Service sshd et Set-Service -Name sshd -StartupType Automatic permettent d’activer le service. Le fichier sshd_config se trouve dans C:ProgramDatassh et peut être édité pour activer des options.
Plateforme
Commande d’installation
Remarque
Windows 10 / 11
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Client souvent préinstallé
Windows Server 2019 / 2022
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Installer le serveur pour accès distant
Ubuntu / Debian
sudo apt install openssh-client openssh-server
Gestion via apt
macOS
Activer Remote Login ou installer via Homebrew
Service géré par launchd
Étapes d’installation OpenSSH :
- Vérifier la version de PowerShell et OpenSSH
- Installer OpenSSH.Client ou OpenSSH.Server selon le rôle
- Démarrer et configurer sshd en démarrage automatique
- Modifier sshd_config pour ajouter Subsystem powershell
Après installation, modifiez sshd_config pour activer la connexion par mot de passe ou par clé publique selon vos besoins. Redémarrez le service sshd pour appliquer les changements et vérifiez la règle pare-feu pour le port 22.
« J’ai automatisé le déploiement d’OpenSSH sur plusieurs serveurs Windows en une matinée »
Alice B.
Modifier sshd_config pour activer PowerShell comme sous-système
Cette partie montre comment éditer sshd_config et ajouter le sous-système PowerShell pour que pwsh fonctionne via SSH. La ligne Subsystem powershell doit pointer vers pwsh.exe en format 8.3 si le chemin contient des espaces.
Après modification, redémarrez le service sshd pour appliquer les changements. N’oubliez pas d’ouvrir le port 22 dans le pare-feu Windows si nécessaire pour autoriser les connexions entrantes.
Une fois OpenSSH configuré, il devient possible de créer des sessions PowerShell distantes sur vos serveurs à distance. La section suivante explique la gestion des sessions et l’exécution de commandes à distance.
Après l’installation, gérer les sessions PowerShell distantes et les commandes via SSH
Créer et utiliser New-PSSession et Enter-PSSession
Cette section détaille la création et la réutilisation des sessions New-PSSession pour administrer plusieurs hôtes. Selon Microsoft, PowerShell 7 fournit le support SSH natif pour ces applets de commande.
Il est courant de stocker la session dans une variable pour la réutiliser ensuite et automatiser les tâches. Enter-PSSession -Session $Session ouvre un shell distant, puis exit referme la connexion proprement.
Commandes PowerShell utiles :
- New-PSSession pour créer une session distante
- Enter-PSSession pour ouvrir un shell interactif
- Invoke-Command pour exécuter un script à distance
- Remove-PSSession pour libérer les ressources
« J’utilise Invoke-Command pour appliquer des correctifs sur des groupes de serveurs sans me déplacer »
Marc D.
Exécuter des commandes et transférer des fichiers avec scp
Ce segment illustre l’usage d’Invoke-Command pour exécuter des commandes et scp pour le transfert de fichiers entre hôtes. Selon la NSA, pour certains contextes, SSH est recommandé plutôt que WinRM pour l’administration distante.
Action
Commande
Exemple
Remarque
Créer une session
New-PSSession
$s = New-PSSession -HostName srv -User user
Stocker la session pour réutilisation
Shell interactif
Enter-PSSession
Enter-PSSession -Session $s
Prompt distant visible
Exécuter commande
Invoke-Command
Invoke-Command -Session $s -ScriptBlock { Get-Service }
Idéal pour scripts
Transfert fichier
scp
scp file.txt user@host:/path/
Utiliser chemins absolus
Après maîtrise des sessions et des transferts, il est essentiel de renforcer l’authentification. Le prochain point montre l’usage des clés SSH pour verrouiller l’accès et simplifier l’automatisation.
En optimisant la sécurité, adopter l’authentification par clé publique pour l’administration à distance
Générer clés et configurer ssh-agent sous Windows
Cette partie explique la génération d’une paire de clés et l’utilisation de ssh-agent pour gérer la clé privée localement. Selon GitHub et pratiques courantes, ed25519 est souvent recommandé pour sa robustesse et sa compacité.
Utilisez ssh-keygen -t ed25519 pour créer la paire puis ssh-add pour charger la clé dans l’agent. Configurez le service ssh-agent en démarrage automatique pour éviter les saisies répétées de passphrase.
Bonnes pratiques :
- Générer une clé par poste ou par opérateur
- Protéger la clé privée avec une passphrase
- Utiliser ssh-agent pour gérer la session
- Restreindre l’accès aux fichiers .ssh
« J’ai réduit les connexions par mot de passe en migrant vers des clés publiques pour tous mes serveurs »
Sophie L.
Déployer clés sur le serveur et verrouiller l’accès SSH
Ce segment montre comment copier la clé publique dans authorized_keys et activer PubkeyAuthentication sur le serveur SSH. Selon Microsoft, il est recommandé de désactiver PasswordAuthentication lorsque les clés sont correctement déployées.
Sur le serveur, placez la clé publique dans C:Users
« La mise en place des clés a considérablement réduit le volume d’alertes liées aux accès non autorisés »
Paul M.