Openssh - windows
OpenSSH est une implémentation libre du protocole Secure Shell (SSH) utilisée pour la gestion de systèmes distants. Le projet est géré par des développeurs tiers dans le cadre de la distribution OpenBSD (la fourche Microsoft se trouve dans GitHub). OpenSSH a été ajouté à Windows à l’automne 2018 et est disponible pour Windows 10 et Windows Server 2019.
SSH est basé sur une architecture client-serveur où le système sur lequel travaille l’utilisateur est le client et le système distant géré est le serveur. OpenSSH comporte différents composants qui offrent une approche sécurisée (chiffrement et authentification) et directe de l’administration de système à distance, notamment :
sshd.exe
: composant de serveur SSH qui doit être exécuté sur le système géré à distance (serveur)ssh.exe
: composant de client SSH qui est exécuté sur le système local de l’utilisateur (client)ssh-keygen.exe
: génère, gère et convertit les clés d’authentification pour SSHssh-agent.exe
: stocke les clés privées utilisées pour l’authentification des clés publiquesssh-add.exe
: ajoute des clés privées à la liste autorisée par le serveurssh-keyscan.exe
: aide à collecter les clés d’hôte SSH publiques à partir de différents ordinateurs hôtessftp.exe
: service qui fournit le protocole Secure File Transfer et est exécuté sur SSHscp.exe
: utilitaire de copie de fichiers exécuté sur SSH
Une documentation détaillée supplémentaire relative aux fonctionnalités courantes d'OpenSSH est disponible en ligne sur OpenSSH.com. Le document suivant traite de son utilisation sur Windows et est utilisable de la même manière que sur son implémentation GNU/Linux.
Installation
Il est possible d'installer l'outil via l'interface graphique mais je préfère personnellement me passer du clicodrome habituel et utiliser une console Powershell en administrateur.
Vérification de la disponibilité de l'outil sur votre plateforme
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Le retour de la commande doit ressembler à ceci
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Installation de la partie cliente
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Installation de la partie serveur
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Démarrage manuel du service
Start-Service sshd
Démarrage automatique avec le système
Set-Service -Name sshd -StartupType 'Automatic'
Une règle de pare-feu autorisant les connexions entrantes est censée être créée automatiquement. Microsoft propose une structure conditionnelle permettant de vérifier son effectivité et, si non, la créer le cas échéant
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
La commande netstat -a -o -n -b
permet de confirmer l'ouverture d'un socket TCP sur le port 22
et donc la bonne écoute du service sur le réseau. Il ne reste plus qu'à s'y connecter via un outil client dédié.