Commande SSH : utiliser les options -l, -p et -i et vérifier les erreurs de connexion
La commande SSH est la commande du client OpenSSH qui se connecte à un serveur Linux distant par une connexion chiffrée sous la forme ssh compte@adresse-du-serveur et exécute des commandes sur le serveur auquel elle s'est connectée. Nous avons exécuté ssh d'un serveur AlmaLinux 9 vers un serveur Debian 12 et vérifié dans l'ordre, de la vérification de la clé d'hôte à la première connexion jusqu'aux options -l, -p et -i, à l'exécution de commandes distantes et à la sortie de débogage de -v. Il en ressort que la manière dont les options s'appliquent réellement peut se vérifier à l'avance avec ssh -G, sans se connecter.
La sortie ci-dessous est exactement celle obtenue sur les deux serveurs. L'adresse du serveur et le compte, le nom d'hôte, le chemin et l'empreinte de la clé, ainsi que les numéros de version d'OpenSSL et du noyau du serveur qui se connecte ont été remplacés par des valeurs d'exemple. Le serveur AlmaLinux qui se connecte utilise le compte root, et le serveur Debian qui reçoit la connexion utilise un compte ordinaire.
1️⃣ Utilisation de base de la commande SSH
Pour se connecter à un serveur distant, on écrit après ssh le nom du compte et l'adresse du serveur reliés par @. Une fois connecté, l'invite devient celle du serveur distant, et la saisie de exit ferme la connexion et ramène au serveur d'origine.
ssh user@192.0.2.10Linux server2 6.1.0-53-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.187-1 (2026-09-07) x86_64
Last login: Wed Oct 28 20:27:41 2026 from 198.51.100.7
[user]:~$ whoami
user
[user]:~$ exit
exit
Connection to 192.0.2.10 closed.Le serveur Debian auquel nous nous sommes connectés a aussi affiché à la connexion quelques lignes d'avis du serveur (motd) et une notification de courrier ; seules ces lignes ont été retirées de la sortie ci-dessus.
Lors de la première connexion à un serveur, ssh affiche l'empreinte de la clé d'hôte du serveur avant la connexion et demande s'il faut continuer. Après avoir saisi yes, la clé d'hôte a été enregistrée dans ~/.ssh/known_hosts, puis le résultat de whoami est apparu.
ssh user@192.0.2.10 whoamiThe authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:9fT2kL0qX8vN4cR1yB6sW3mZ7aH5dE0uJ2pG8oK1iVc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.
userUne fois la clé enregistrée dans known_hosts, la question n'est plus réapparue lors des connexions suivantes au même serveur. Si l'empreinte diffère de la valeur fournie par l'administrateur du serveur, saisissez no. Après avoir saisi no, ssh s'est arrêté sans se connecter.
ssh user@192.0.2.10The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:9fT2kL0qX8vN4cR1yB6sW3mZ7aH5dE0uJ2pG8oK1iVc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? no
Host key verification failed.En terminant par no, le fichier known_hosts n'a pas été créé. La même question réapparaît donc à la connexion suivante.
2️⃣ Options de la commande SSH
Les options de ssh s'écrivent avant la cible de connexion. En lançant ssh seul, la liste des options disponibles s'est affichée sous forme d'aide à l'utilisation.
sshusage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address]
[-c cipher_spec] [-D [bind_address:]port] [-E log_file]
[-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
[-J destination] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
destination [command [argument ...]]
ssh [-Q query_option]Si l'on passe une option absente de l'aide à l'utilisation, l'erreur [unknown option] s'affiche avec la même aide.
-V affiche la version du client OpenSSH installée. Ci-dessous figure le résultat du serveur AlmaLinux qui se connecte ; sur le serveur Debian 12 qui reçoit la connexion, OpenSSH_9.2p1 s'est affiché.
ssh -VOpenSSH_9.9p1, OpenSSL 3.5.1 1 Jul 2025-G ne se connecte pas au serveur : il combine les options indiquées et les fichiers de configuration, puis affiche les valeurs réellement appliquées. La sortie complète fait 87 lignes, nous ne gardons donc que les lignes utiles avec grep.
ssh -G user@example.com | grep -E "^(user|hostname|port|identityfile|connecttimeout|stricthostkeychecking|serveraliveinterval) "user user
hostname example.com
port 22
stricthostkeychecking ask
serveraliveinterval 0
identityfile ~/.ssh/id_rsa
identityfile ~/.ssh/id_ecdsa
identityfile ~/.ssh/id_ecdsa_sk
identityfile ~/.ssh/id_ed25519
identityfile ~/.ssh/id_ed25519_sk
identityfile ~/.ssh/id_xmss
identityfile ~/.ssh/id_dsa
connecttimeout noneLes sept lignes identityfile sont les fichiers de clé par défaut que ssh cherche dans l'ordre quand -i n'est pas indiqué. connecttimeout none signifie qu'aucun délai d'attente de connexion n'a été défini.
| Option | Copier | Description |
|---|---|---|
| -lCompte | Indique le nom du compte de connexion | |
| -pPort | Indique le port de connexion (22 par défaut) | |
| -iFichier de clé | Indique le fichier de clé privée | |
| -v | Affiche le déroulement de la connexion en lignes debug1 | |
| -C | Compresse les données échangées | |
| -X | Redirection X11 (programmes graphiques distants) | |
| -T | N'alloue pas de pseudo-terminal | |
| -t | Force l'allocation d'un pseudo-terminal | |
| -n | Redirige l'entrée standard vers /dev/null | |
| -q | Réduit les avertissements et messages d'information | |
| -ooption=valeur | Définit une option du fichier de configuration pour cette connexion seulement | |
| -L | Redirection de port locale | |
| -F | Indique le fichier de configuration | |
| -G | Affiche les réglages appliqués, sans se connecter | |
| -V | Affiche la version du client OpenSSH |
| Option | Copier | Description |
|---|---|---|
| -N | Garde la connexion ouverte sans commande distante | |
| -J | Se connecte en passant par un autre serveur |
3️⃣ L'option ssh -l et la redirection de port avec -L
-l est l'option qui indique le nom du compte de connexion. ssh -l user 192.0.2.10 s'est connecté avec le même compte que ssh user@192.0.2.10.
ssh -l user 192.0.2.10 whoamiuserLa vérification avec -G a montré que le compte indiqué avec -l figurait dans l'entrée user.
ssh -G -l admin example.com | grep -E "^(user|hostname|port) "user admin
hostname example.com
port 22Nous avons aussi vérifié avec -G lequel s'applique quand on écrit à la fois -l et compte@adresse. Sous OpenSSH 9.9p1, c'est admin, indiqué avec -l, qui a été appliqué.
ssh -G -l admin user@example.com | grep -E "^(user|hostname) "user admin
hostname example.comLe -L majuscule a un nom proche, mais c'est une option de redirection de port locale sans rapport avec le compte. Elle fait passer les connexions arrivant sur un port de votre serveur à l'intérieur de la connexion SSH et les relie à une adresse et un port du côté du serveur distant.
8080:localhost:80 signifie relier le port 8080 de votre serveur au port 80 de localhost vu depuis le serveur distant. La vérification avec -G a montré la même valeur dans l'entrée localforward.
ssh -G -L 8080:localhost:80 user@example.com | grep -E "^(hostname|localforward) "hostname example.com
localforward 8080 [localhost]:80Pour simplement garder un tunnel ouvert, ajoutez -N, qui maintient la connexion sans commande distante.
4️⃣ Indiquer le port et le fichier de clé SSH
Si le serveur SSH accepte les connexions sur un autre port que le 22, indiquez le port avec -p. -i indique un fichier de clé privée qui ne porte pas un nom par défaut.
ssh -G -p 2222 -i ./mykey user@example.com | grep -E "^(user|hostname|port|identityfile) "user user
hostname example.com
port 2222
identityfile ./mykeyAvec -i, les sept lignes des fichiers de clé par défaut ont disparu et seul le fichier indiqué est resté.
Les fichiers de clé se créent avec ssh-keygen. Si vous utilisez déjà une clé, indiquez un nouveau nom de fichier avec -f. Voici le résultat de la création d'une clé ed25519 sous le nouveau nom mykey.
ssh-keygen -t ed25519 -f ./mykey -N "" -C "user@example.com"Generating public/private ed25519 key pair.
Your identification has been saved in ./mykey
Your public key has been saved in ./mykey.pub
The key fingerprint is:
SHA256:XLbhLZHSNdMvUqhSIbzRNJi/zKKkNnWmy0mTeBoUfaY user@example.com
The key's randomart image is:
+--[ED25519 256]--+
| ..=+.+o |
| . =oo+.oo |
| . . +=B. . . |
| . =o=o=. . .|
| . E S++... . |
| . .o.+ +. |
| o+== . |
| +*oo |
| ...+. |
+----[SHA256]-----+mykey est la clé privée et mykey.pub la clé publique. Le manuel d'OpenSSH indique de placer la clé publique dans ~/.ssh/authorized_keys sur le serveur auquel on se connecte. Cela peut se faire avec ssh-copy-id, comme dans [ssh-copy-id -i ./mykey.pub user@192.0.2.10].
Si vous vous connectez souvent au même serveur, écrivez un alias dans ~/.ssh/config et saisissez seulement ssh suivi de l'alias. La ligne Host est l'alias, et les lignes en dessous sont les valeurs appliquées lors d'une connexion avec cet alias.
Host myserver
HostName 192.0.2.10
User user
Port 2222
IdentityFile ~/.ssh/mykeyEn écrivant ces réglages dans un fichier ./config lu avec -F, l'adresse, le compte, le port et le fichier de clé se sont tous appliqués avec un seul alias.
ssh -F ./config -G myserver | grep -E "^(user|hostname|port|identityfile) "user user
hostname 192.0.2.10
port 2222
identityfile ~/.ssh/mykeyLes options écrites sur la ligne de commande l'emportent sur le fichier de configuration. En ajoutant -p 22 au même alias, port est passé à 22.
ssh -F ./config -G -p 22 myserver | grep -E "^(hostname|port) "hostname 192.0.2.10
port 22hostname est resté à 192.0.2.10 comme dans le fichier de configuration, et seul port a pris la valeur écrite sur la ligne de commande.
5️⃣ Exécuter des commandes à distance avec SSH
Si l'on écrit une commande après la cible de connexion, ssh exécute seulement cette commande sans écran de connexion, puis ferme la connexion. S'il y a plusieurs commandes ou des symboles du shell comme le point-virgule, on les entoure de guillemets simples.
ssh user@192.0.2.10 'whoami; hostname'user
server2Le code de sortie de la commande distante est revenu tel quel comme code de sortie de ssh. Dans un script, cette valeur permet de savoir si la commande distante a réussi.
ssh user@192.0.2.10 'exit 3'; echo $?3Quand on exécute ainsi une commande, aucun pseudo-terminal n'est alloué. tty lancé avec -T a affiché [not a tty].
ssh -T user@192.0.2.10 ttynot a ttyLe manuel de ssh décrit -t comme l'option à utiliser pour lancer des programmes en mode écran sur le serveur distant. Avec -t, /dev/pts/0 est apparu, ainsi qu'un message indiquant à la fin que la connexion était fermée.
ssh -t user@192.0.2.10 tty/dev/pts/0
Connection to 192.0.2.10 closed.En ajoutant -q, ce message n'est plus apparu.
ssh -t -q user@192.0.2.10 tty/dev/pts/0-n redirige l'entrée standard de ssh vers /dev/null. Sans -n, le cat distant a affiché tel quel le hello transmis par le tube.
echo hello | ssh user@192.0.2.10 cathelloecho hello | ssh -n user@192.0.2.10 catEn ajoutant -n à la même commande, hello n'est pas parvenu au cat distant et rien ne s'est affiché.
6️⃣ Erreurs de connexion SSH et débogage avec ssh -v
Quand la connexion échoue, on regarde d'abord le message d'erreur pour savoir à quelle étape elle s'est arrêtée. Quand l'adresse du serveur était introuvable, [Could not resolve hostname] s'est affiché.
ssh user@nosuchhost.invalidssh: Could not resolve hostname nosuchhost.invalid: Name or service not knownSi l'adresse est correcte mais que rien ne répond sur ce port, [Connection timed out] s'affiche. Avec -o ConnectTimeout=5, la tentative s'est terminée sur cette erreur au bout de 5 secondes.
ssh -o ConnectTimeout=5 -p 2222 user@192.0.2.10ssh: connect to host 192.0.2.10 port 2222: Connection timed outEn nous connectant avec -o BatchMode=yes à un serveur absent de known_hosts, ssh s'est arrêté sur [Host key verification failed.] sans demander de confirmer la clé d'hôte. Pour que la première connexion d'un script ne reste pas bloquée sur la question, on utilise StrictHostKeyChecking=accept-new.
ssh -o BatchMode=yes user@192.0.2.10 trueHost key verification failed.Selon le manuel de ssh_config, accept-new enregistre sans demander la clé d'hôte des seuls serveurs jamais vus auparavant. Si une clé différente de celle déjà enregistrée arrive, la connexion est refusée.
ssh -o StrictHostKeyChecking=accept-new user@192.0.2.10 whoamiWarning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.
userSi aucune clé n'est enregistrée pour le compte, [Permission denied (publickey)] s'affiche. Des échecs d'authentification répétés peuvent amener le serveur à bloquer l'IP qui se connecte.
-v affiche le déroulement de la connexion en lignes debug1. La sortie complète dépasse 70 lignes, nous n'avons donc gardé ci-dessous, avec grep, que les lignes des étapes de connexion et d'authentification.
ssh -v -i ~/.ssh/id_ed25519 user@192.0.2.10 true 2>&1 | grep -E 'Connecting to|Connection established|remote software version|Server host key|is known and matches|can continue|Offering public key|Authenticated to|Exit status'debug1: Connecting to 192.0.2.10 [192.0.2.10] port 22.
debug1: Connection established.
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.2p1 Debian-2+deb12u10
debug1: Server host key: ssh-ed25519 SHA256:9fT2kL0qX8vN4cR1yB6sW3mZ7aH5dE0uJ2pG8oK1iVc
debug1: Host '192.0.2.10' is known and matches the ED25519 host key.
debug1: Authentications that can continue: publickey,password
debug1: Offering public key: /root/.ssh/id_ed25519 ED25519 SHA256:4bN7qT1xW9cK3mR6yH0sD2fL8vZ5aJ1eP7uG3oX4iQs explicit
Authenticated to 192.0.2.10 ([192.0.2.10]:22) using "publickey".
debug1: Exit status 0La ligne Connecting to est la tentative de connexion, et les lignes Server host key et is known and matches correspondent à la vérification de la clé d'hôte. La clé a été proposée à la ligne Offering public key, et l'authentification par clé s'est achevée à la ligne Authenticated to. Si cela bloque à l'authentification, vérifiez d'abord que le fichier de clé voulu apparaît à la ligne Offering public key.
En ajoutant -C, la valeur compression de la ligne kex est passée de none à zlib@openssh.com.
ssh -v -C user@192.0.2.10 true 2>&1 | grep -E 'compression'debug1: kex: server->client cipher: aes256-gcm@openssh.com MAC: <implicit> compression: zlib@openssh.com
debug1: kex: client->server cipher: aes256-gcm@openssh.com MAC: <implicit> compression: zlib@openssh.com
debug1: Enabling compression at level 6.-X est l'option qui affiche sur votre ordinateur les fenêtres des programmes graphiques du serveur distant. Lancée sur un serveur AlmaLinux sans écran, elle a produit une ligne debug1 indiquant l'absence de DISPLAY.
ssh -v -X user@192.0.2.10 true 2>&1 | grep DISPLAYdebug1: X11 forwarding requested but DISPLAY not setDISPLAY est la variable d'environnement qui définit où s'affichent les fenêtres graphiques. C'est pourquoi -X s'utilise pour se connecter depuis un ordinateur doté d'un bureau graphique.
🔲 Simulateur de la commande SSH
Dans le simulateur ci-dessous, vous pouvez vous connecter à un serveur virtuel avec ssh et essayer vous-même les options, les commandes distantes et ssh -G en les saisissant.
🔢 FAQ & contenus recommandés
SSH
SSH sous Linux : définition et configuration de base
Un article qui présente l'origine de SSH, venu remplacer Telnet non chiffré, son port par défaut 22, l'authentification par clé et son installation.
Sécurité
Vulnérabilité OpenSSH CVE-2024-6387 : blocage temporaire et application du correctif
Un article sur la façon dont la vulnérabilité OpenSSH regreSSHion exploite le signal d'alarme du délai d'attente de connexion, et sur l'ordre dans lequel nous avons appliqué un blocage temporaire puis le correctif.
Cloudways
Se connecter à Cloudways en SFTP & SSH : configurer FileZilla, ajouter une clé SSH, liste blanche d'IP
Un article sur l'enregistrement d'une clé SSH sur un serveur cloud géré, l'ajout de l'IP de connexion à la liste blanche, puis la connexion avec ssh et FileZilla.
ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.