05/12/2025

Logiciels

Comment utiliser le client SSH natif de Windows 11 ?

I. Présentation

Windows 10 et Windows 11 intègrent un client SSH natif, basé sur OpenSSH. Vous n’avez donc plus besoin de recourir systématiquement à un outil tiers comme PuTTY (ou MTPutty) pour vous connecter à des machines Linux ou Windows, des équipements réseau ou des hyperviseurs. Dans ce tutoriel, nous allons voir comment utiliser le client SSH sous Windows 11, notamment avec les connexions par mot de passe ou par clé publique, et effectuer des transferts de fichiers via SCP ou SFTP.

Version originale de l'article : 28 octobre 2020

II. Installer le client SSH sous Windows

Il y a de fortes chances que le client SSH (client OpenSSH) soit déjà installé sur votre machine, qu'elle soit sous Windows 10 ou Windows 11. À partir d'une console PowerShell ouverte en tant qu'administrateur, vous pouvez le vérifier rapidement avec cette commande :

Get-WindowsCapability -Online | Where{ $_.Name -like 'OpenSSH.Client*' }

Ce client SSH est distribué au travers des fonctionnalités à la demande de Windows 10. Il est à noter qu'il est installé par défaut depuis Windows Server 2019 ainsi que sur Windows 10 depuis la version 1809. Il est donc natif sur Windows 11.

La commande précédente permet de s'en assurer. Dans le cas où il n'est pas installé, il est possible de procéder à l'installation.

Voici comment l'installer à l'aide de PowerShell :

Add-WindowsCapability -Online -Name OpenSSH.Client

En guise d'alternative, il est tout à fait possible d'utiliser DISM. Ce qui donne :

dism /online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0

Attention à ne pas confondre avec OpenSSH Server, qui permettrait de se connecter à distance sur la machine locale, via SSH. Il s'agit d'un composant à part, que vous pourriez installer également avec DISM :

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Même si la méthode en ligne de commande est plus directe, c'est aussi possible à partir de l'interface graphique de Windows.

Les binaires d'OpenSSH sont installés directement dans le dossier C:\Windows\System32\OpenSSH\, et non dans le dossier Programmes. C'est assez logique puisqu'il s'agit d'un composant Windows.

Le client SSH donne accès à un ensemble d'utilitaires, accessibles à partir de la ligne de commande :

  • scp.exe : méthode de transfert de fichiers via SSH
  • sftp.exe : méthode de transfert de fichiers via FTP (dans SSH)
  • ssh.exe : le client SSH pour établir une connexion interactive avec un hôte distant
  • ssh-add.exe : ajouter une clé SSH à la base de données locale de l'agent
  • ssh-agent.exe : gestion des clés SSH de l'hôte
  • ssh-keygen.exe : générer des clés SSH
  • ssh-keyscan.exe : collecter les clés publiques à partir de plusieurs hôtes

Dans ce tutoriel, nous allons utiliser deux utilitaires : le client SSH principal, à savoir ssh.exe, ainsi que scp.exe pour le transfert de fichiers. D'ailleurs, si vous exécutez ssh dans une console PowerShell ou une Invite de commande, vous verrez que l'aide s'affiche. Cela montre bien que l'outil est bien présent.

À titre d'information et avant de poursuivre, voici comment désinstaller le client SSH sur Windows :

Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

III. Utiliser le client SSH sous Windows

A. Connexion SSH simple

Pour se connecter en SSH sur une machine distante à partir de la ligne de commande Windows, il convient d'utiliser ssh et d'y ajouter des options. En effet, nous allons préciser le nom d'utilisateur et l'hôte cible. Par défaut, le client SSH va prendre le port 22 pour la connexion, à savoir le port par défaut de SSH.

Par exemple, pour se connecter avec l'utilisateur flo sur l'hôte ayant l'adresse IP 192.168.14.158, la commande sera :

ssh [email protected]

Si l'hôte distant respecte les bonnes pratiques de sécurité, il y a des chances pour que le port SSH ne soit pas le port 22. Dans ce cas, vous devez utiliser l'option -p et préciser le numéro de port. Par exemple avec le port 22222 :

ssh [email protected] -p 22222

Lors de la première connexion, il sera nécessaire d'accepter la clé de l'hôte distant. Pour cela, saisissez yes et appuyez sur "Entrée" dans la console. À partir de ce moment-là, le mot de passe sera demandé : saisissez-le.

Voilà, vous êtes connecté et pouvez profiter de votre shell SSH. Vous pouvez lancer des commandes sur la machine distante à partir du terminal interactif. Saisissez simplement exit pour vous déconnecter.

B. Connexion SSH avec une clé

Pour effectuer une authentification SSH par clé, par exemple pour se connecter de Windows vers Linux en SSH avec une clé, voici comment procéder. Tout d'abord, il convient de générer une paire de clés SSH si vous n'en avez pas. Il est possible de le faire de différentes façons, y compris via PuTTYgen, ou simplement avec cette commande :

ssh-keygen

Un nom de fichier vous sera demandé, ainsi qu'une passphrase. Elle devra être saisie à chaque fois que la clé est utilisée. C'est facultatif (et contraignant dans certains cas).

Suite à l'exécution de cette commande, vous obtenez deux fichiers :

  • La clé privée : C:\Users\Florian/.ssh/id_ed25519
  • La clé publique : C:\Users\Florian/.ssh/id_ed25519.pub

La clé privée ne doit pas être partagée. Donc, pour effectuer une connexion SSH sur un hôte distant, il va falloir autoriser notre clé publique. C'est elle qui doit prendre la direction du serveur distant.

En temps normal, cette autorisation de connexion peut s'effectuer à distance via la commande ssh-copy-id, mais celle-ci n'est pas disponible sur Windows.

Nous allons contourner le problème en poussant le contenu de la clé publique vers le serveur distant, au sein du fichier .authorized_keys de la session de l'utilisateur avec lequel nous voulons nous connecter.

Voici la commande à exécuter :

cat "C:\Users\Florian/.ssh/id_ed25519.pub" | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys

Dans cette commande, vous devez adapter le chemin vers la clé publique, le nom d'utilisateur pour la connexion SSH et l'adresse IP de l'hôte distant. Saisissez votre mot de passe et l'information sera poussée.

Ensuite, relancez une connexion SSH vers l'hôte distant. La connexion s'effectuera à l'aide de votre clé SSH. Si vous avez déterminé une passphrase, il sera nécessaire de la préciser, sinon la connexion sera automatique. Voici un exemple :

Vous pouvez indiquer une clé privée spécifique à l'aide de l'option -i et du chemin vers cette clé.

ssh [email protected] -i "C:\Users\Florian\.ssh\id_2025"

Pour éviter de devoir saisir la passphrase de la clé à chaque utilisation, vous devez la lier à l'agent SSH. Ceci est valable pour une clé existante ou celle que vous venez de générer. Vous pouvez l'ajouter à votre base locale grâce à la commande ssh-add.exe.

ssh-add "C:\Users\Florian/.ssh/id_ed25519"

Suite à l'exécution de cette commande, vous allez probablement obtenir l'une de ces erreurs :

Error connecting to agent: No such file or directory
# ou
unable to start ssh-agent service, error :1058

Cette erreur est normale car le service ssh-agent est arrêté sur Windows. Grâce aux deux commandes ci-dessous, vous allez configurer le démarrage automatique de ce service et le démarrer dans la foulée.

Set-Service ssh-agent -StartupType 'Automatic'
Start-Service ssh-agent

Relancez la commande d'ajout et vous serez invité à préciser la passphrase :

ssh-add "C:\Users\Florian/.ssh/id_ed25519"

Enter passphrase for C:\Users\Florian\.ssh\id_ed25519:
Identity added: C:\Users\Florian\.ssh\id_ed25519 (florian@W11)

Lors de la prochaine utilisation, et à condition que le service SSH Agent soit actif, l'authentification sera automatique ! De quoi allier sécurité et praticité.

IV. Transfert de fichiers avec SCP sous Windows

Dans cette partie du tutoriel, nous allons apprendre à manipuler l'exécutable scp.exe. Il est très pratique car il sert à réaliser des transferts de fichiers via SSH, comme sftp.exe qui s'appuie sur SFTP, mais ici nous réalisons le transfert via SCP.

L'objectif va être de copier un fichier du PC local vers l'hôte distant, mais aussi de faire l'inverse. Autrement dit, vous pouvez copier un fichier de Windows vers Linux en SSH, et inversement.

A. Envoyer un fichier avec scp sous Windows

Sur le principe, c'est un peu comme avec la commande ssh, il faut préciser le nom d'utilisateur et l'hôte distant. Mais, en complément, vous devez aussi ajouter le fichier source et le dossier de destination.

Par exemple, pour envoyer le fichier C:\Users\Florian\Downloads\demo.txt vers le dossier /home/flo sur le serveur distant 192.168.14.158, à l'aide du compte flo, cela donne cette commande :

scp "C:\Users\Florian\Downloads\demo.txt" [email protected]:/home/flo

Un port peut être précisé à l'aide de l'option -P :

scp -P 22222 "C:\Users\Florian\Downloads\demo.txt" [email protected]:/home/flo

Une fois le fichier transféré, nous pouvons vérifier sa présence à l'aide d'une session interactive :

L'option -r est également intéressante puisqu'elle va permettre d'envoyer tout un dossier et son contenu avec récursivité. Cela va permettre de prendre tous les fichiers et tous les sous-dossiers à partir de la racine.

Pour envoyer tout le contenu du dossier C:\Users\Florian\Downloads\, voici un exemple :

scp -r "C:\Users\Florian\Downloads\" [email protected]:/home/flo

B. Télécharger un fichier avec scp sous Windows

À l'inverse, comme je le disais, nous pouvons également télécharger un fichier à partir de l'hôte distant sur le PC local. Dans ce cas, nous devons inverser la source et la destination par rapport à la commande précédente.

Voici un exemple pour récupérer le fichier "/home/florian/MonImage.png" et le stocker en local dans "C:\TEMP".

scp [email protected]:/home/flo/demo.txt "C:\Users\Florian\Downloads\"

C. Utilisation de sftp.exe sous Windows

L'alternative à SCP, c'est le SFTP, c'est-à-dire du FTP encapsulé dans un flux SSH. Le fonctionnement est un peu différent puisque nous devons nous connecter en SFTP sur l'hôte distant, puis une fois la connexion établie, nous allons pouvoir exécuter des commandes pour lister le contenu distant, envoyer un fichier, ou télécharger un fichier.

Par exemple, pour se connecter, cela donne :

sftp.exe [email protected]
# ou
sftp.exe -P 22222 [email protected]

Une fois connecté, le prompt sftp> va s'afficher. Pour envoyer un fichier, il faudra utiliser la commande FTP put de cette façon :

sftp> put "C:\Users\Florian\Downloads\demo2.txt"

Ensuite, la commande ls va permettre de lister le contenu de l'hôte distant, ce sera utile si l'on veut s'assurer que le fichier a été envoyé :

sftp> ls /home/flo

À l'inverse, pour télécharger un fichier, nous devons utiliser la commande FTP get. Voici un exemple, toujours sur le principe source destination :

sftp> get /home/flo/demo2.txt "C:\Users\Florian\Downloads\"

Le SFTP fonctionne bien, mais le SCP est beaucoup plus pratique !

V. Conclusion

Sur Windows 11 et Windows Server, vous disposez d’un client SSH natif et prêt à l'emploi, que vous pouvez utiliser afin de vous connecter à des serveurs distants ou transférer des fichiers. L'intégration des consoles avec Windows Terminal permet aussi de créer des raccourcis de connexions SSH (ou voir ici également).

Les personnes habituées à utiliser SSH sous Linux ne devraient pas être perdues pour utiliser le client SSH de Windows et les différents outils associés comme scp.exe et sftp.exe, celui-ci étant basé sur OpenSSH.

Retrouvez mon ancienne vidéo de démonstration à ce sujet :


Le client SSH est-il installé par défaut sous Windows 11 ?

Oui, il est installé par défaut. Il s'agit d'une fonctionnalité facultative, mais elle est préinstallée, à moins qu'un administrateur ait procédé à la désinstallation du client OpenSSH. Dans ce cas, suivez les instructions de ce tutoriel pour procéder à son installation (via Paramètres ou PowerShell).

Comment me connecter en SSH sur un autre port que le 22 ?

Au moment de rédiger votre commande, utilisez -p avec ssh ou -P avec scp/sftp pour spécifier un port personnalisé. Par exemple : ssh [email protected] -p 22222.

Où sont stockées mes clés SSH sous Windows 11 ?

Par défaut, dans C:\Users\<Utilisateur>\.ssh\, qui est un répertoire caché. Les fichiers typiques : id_rsa et id_rsa.pub ou id_ed25519 et id_ed25519.pub.

Comment désinstaller le client SSH sur Windows ?

À partir d'une console PowerShell ouverte en tant qu'administrateur, vous pouvez simplement exécuter cette commande : Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0.

Quelle est la différence entre SCP et SFTP ?

  • SCP (Secure Copy) permet de copier des fichiers de façon simple d'une machine à une autre en ligne de commande.
  • SFTP (SSH File Transfer Protocol) est plus interactif, comme un mini-client FTP dans une connexion SSH (sécurisée, donc). Une fois la connexion établie, des commandes FTP (put, get, ls) exécutées dans une session.

Comment éviter de retaper la passphrase à chaque connexion ?

Vous devez utiliser l'agent SSH (ssh-agent.exe) de Windows 11. Comme l'explique ce tutoriel, il est nécessaire de démarrer le service, puis d'ajouter la clé privée à votre magasin local grâce à cette commande (adaptez le chemin) : ssh-add C:\Users\.ssh\id_ed25519.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

6 commentaires sur “Comment utiliser le client SSH natif de Windows 11 ?

  • Merci pour l’article d’amorçe sur le sujet, est-ce qu’il est possible d’avoir une configuration locale ? de type :

    « `
    Host ma-machine-*
    user avrel
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    ProxyJump rebond1
    DynamicForward localhost:10331
    « `

    Répondre
    • Bonjour vebryn,
      Je n’ai pas encore eu l’occasion de tester, mais il faudrait voir au niveau du fichier de configuration « c:\users\username\.ssh\config ». Il peut être créé s’il n’existe pas. Je suis preneur de retours à ce sujet 🙂
      Cordialement,
      Florian

      Répondre
  • Bonjour,

    J’ai un problème avec le SSH sur mon ordinateur.
    Lorsque je me connecte à mon serveur SSH avec mon téléphone portable il n’y a aucun problème et lorsque j’essaye avec mon ordinateur sous windows 10 je me retrouve avec le message d’erreur suivant : « ssh: connect to host 192.168.1.54 port 22: Permission denied »

    Est il possible que le pare feu windows bloque les connexions sortantes? Avez vous une idée de comment résoudre mon problème?

    Je vous remercie pour votre aide.
    Jonathan

    Répondre
  • PARAMETRER LE PARFEU DU SERVEUR SI LE PORT EST DIFFERENT DU 22
    Création d’une règle dans le ParFeu SERVEUR pour le port 222.
    New-NetfirewallRule -Name ssh-agent -DisplayName ‘OpenSSH Authentication Agent – Port 222’ -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 222

    Répondre
  • Je suis sur Windows 10 et personnellement il m’est impossible d’utiliser les Host pour paramétrer automatiquement les informations à rentrer lors d’une connexion en fonction de tels ou tels serveur. Les informations host sont tout simplement ignoré comme si cela n’exister pas. Toujours pas trouver pourquoi ce phénomène. User, Hostname, etc non reconnu ? (tout le paramètre par défaut ou non de SSH n’y change rien).

    Répondre
  • De mémoire le groupe administrators est en acces deny, il faut l’autoriser dans la config de ssh

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.