Openssh - windows

De Wiki doc


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 SSH
  • ssh-agent.exe : stocke les clés privées utilisées pour l’authentification des clés publiques
  • ssh-add.exe : ajoute des clés privées à la liste autorisée par le serveur
  • ssh-keyscan.exe : aide à collecter les clés d’hôte SSH publiques à partir de différents ordinateurs hôtes
  • sftp.exe : service qui fournit le protocole Secure File Transfer et est exécuté sur SSH
  • scp.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é.

Source