Établir une connexion SSH est une compétence essentielle pour toute personne qui gère un site web ou un serveur. SSH (Secure Shell) offre une connexion sécurisée et chiffrée avec votre serveur, qui vous permet d'exécuter des commandes, de gérer des fichiers et de modifier des configurations. Dans ce guide complet, vous apprendrez étape par étape comment établir une connexion SSH, que vous utilisiez Windows, Mac ou Linux.

Qu'est-ce que SSH et pourquoi établir une connexion SSH ?

SSH signifie Secure Shell : c'est un protocole réseau qui établit une connexion sécurisée entre votre ordinateur et un serveur distant. Toutes les données envoyées via SSH, y compris les mots de passe et les commandes, sont chiffrées. Il est donc sûr d'effectuer des tâches sensibles comme la gestion de serveur, même sur des réseaux non sécurisés. Établir une connexion SSH est la méthode standard pour gérer des serveurs VPS et des serveurs dédiés.

SSH face aux autres méthodes de connexion

ProtocoleChiffréUsageSécurité
SSHOui (entièrement)Gestion de serveur, transfert de fichiersExcellente
FTPNonTransfert de fichiersNon sécurisé
SFTPOui (via SSH)Transfert de fichiersExcellente
TelnetNonGestion de serveur (obsolète)Non sécurisé
RDPOuiBureau à distance WindowsBonne

Comme vous le voyez, SSH est beaucoup plus sûr que des protocoles traditionnels comme FTP et Telnet. Là où vous utilisiez autrefois FTP pour le transfert de fichiers, SSH vous permet aussi de gérer des fichiers via SFTP ou SCP.

De quoi avez-vous besoin pour établir une connexion SSH ?

Avant de pouvoir établir une connexion SSH, vous avez besoin des informations suivantes de la part de votre hébergeur :

  • Adresse IP ou nom d'hôte du serveur : l'adresse de votre serveur
  • Nom d'utilisateur : souvent « root » pour un nouveau VPS, ou un utilisateur personnalisé
  • Mot de passe ou clé SSH : votre méthode d'authentification
  • Numéro de port : port 22 par défaut, mais parfois modifié pour plus de sécurité
  • Client SSH : le logiciel avec lequel vous établissez la connexion

Établir une connexion SSH sous Windows

Windows 10 et 11 disposent d'un client SSH intégré : vous n'avez donc plus besoin d'installer de logiciel supplémentaire pour établir une connexion SSH.

Méthode 1 : Windows Terminal ou PowerShell

  1. Ouvrez Windows Terminal ou PowerShell (cherchez dans le menu Démarrer)
  2. Saisissez la commande SSH : ssh gebruikersnaam@ip-adres
  3. Si le port n'est pas le port standard (22), utilisez : ssh -p poortnummer gebruikersnaam@ip-adres
  4. Lors de la première connexion, SSH vous demande si vous faites confiance à l'empreinte du serveur : saisissez « yes »
  5. Saisissez votre mot de passe (les caractères ne s'affichent pas, c'est normal)
  6. Vous êtes maintenant connecté à votre serveur

Méthode 2 : PuTTY (client SSH classique)

PuTTY est depuis des années le client SSH le plus populaire sous Windows et propose des fonctions supplémentaires comme les sessions enregistrées et la redirection de port (port forwarding) :

  1. Téléchargez PuTTY depuis le site officiel (putty.org)
  2. Ouvrez PuTTY et saisissez l'adresse IP dans « Host Name »
  3. Vérifiez que le port est correct (22 par défaut)
  4. Sélectionnez « SSH » comme type de connexion
  5. Facultatif : enregistrez la session pour une utilisation ultérieure
  6. Cliquez sur Open
  7. Acceptez l'empreinte du serveur lors de la première connexion
  8. Connectez-vous avec votre nom d'utilisateur et votre mot de passe

Établir une connexion SSH sous macOS

macOS dispose d'un client SSH intégré dans l'application Terminal. Établir une connexion SSH sur Mac est particulièrement simple :

  1. Ouvrez Terminal (Applications > Utilitaires > Terminal, ou cherchez via Spotlight)
  2. Saisissez : ssh gebruikersnaam@ip-adres
  3. Pour un port non standard : ssh -p poortnummer gebruikersnaam@ip-adres
  4. Acceptez l'empreinte du serveur lors de la première connexion (« yes »)
  5. Saisissez votre mot de passe
  6. Vous êtes connecté

Établir une connexion SSH sous Linux

Linux intègre SSH par défaut. Ouvrez votre terminal et utilisez les mêmes commandes que sous macOS. Le client SSH est disponible sur toutes les distributions Linux sans installation supplémentaire.

Configurer des clés SSH : plus sûr que les mots de passe

Utiliser des clés SSH à la place des mots de passe est la méthode recommandée pour établir une connexion SSH. Les clés SSH sont des paires de clés cryptographiques pratiquement impossibles à casser.

Générer une clé SSH

  1. Ouvrez votre terminal (sous Windows : PowerShell)
  2. Exécutez la commande : ssh-keygen -t ed25519 -C "je-email@example.com"
  3. Choisissez un emplacement pour la clé (l'emplacement par défaut convient très bien)
  4. Saisissez éventuellement une phrase secrète (passphrase) pour plus de sécurité
  5. Deux fichiers sont créés : la clé privée (à garder secrète) et la clé publique (.pub)

Copier la clé publique sur le serveur

Copiez votre clé publique sur le serveur avec la commande ssh-copy-id :

ssh-copy-id -i ~/.ssh/id_ed25519.pub gebruikersnaam@ip-adres

Une fois la copie effectuée, vous pouvez vous connecter sans mot de passe. Le serveur vérifie votre identité à l'aide de votre clé privée, stockée sur votre ordinateur.

Fichier de configuration SSH : enregistrer vos connexions

Si vous vous connectez régulièrement à plusieurs serveurs, vous pouvez simplifier l'établissement d'une connexion SSH avec un fichier de configuration SSH (~/.ssh/config). Vous y définissez des alias pour vos serveurs :

Exemple de configuration SSH

Dans votre fichier de configuration SSH, vous pouvez créer pour chaque serveur un bloc avec le nom d'hôte, l'adresse IP, le nom d'utilisateur, le numéro de port et le chemin vers la bonne clé SSH. Une fois la configuration faite, il vous suffit de saisir un alias court pour vous connecter, au lieu de la commande complète avec tous les paramètres.

Transférer des fichiers via SSH

En plus de la gestion de serveur, vous pouvez aussi utiliser SSH pour transférer des fichiers en toute sécurité. Il existe deux méthodes principales :

SCP (Secure Copy)

  • Téléverser un fichier : scp bestand.txt gebruiker@server:/pad/naar/doel/
  • Télécharger un fichier : scp gebruiker@server:/pad/naar/bestand.txt ./lokaal/
  • Téléverser un dossier : scp -r mapnaam/ gebruiker@server:/pad/naar/doel/

SFTP (SSH File Transfer Protocol)

SFTP offre une session interactive de transfert de fichiers via SSH. Vous pouvez naviguer, consulter des fichiers et les transférer avec des commandes comme ls, cd, get et put. De nombreux clients FTP graphiques comme FileZilla prennent aussi en charge les connexions SFTP.

Tunnels SSH et redirection de port

Une utilisation avancée de SSH consiste à créer des tunnels, qui vous permettent de faire passer le trafic de votre ordinateur local par le serveur. C'est utile pour accéder en toute sécurité à des services qui ne sont pas directement accessibles, comme une installation phpMyAdmin accessible uniquement en local.

Redirection de port locale (local port forwarding)

Avec la redirection de port locale, vous rendez un service du serveur accessible via un port de votre ordinateur local. Vous pouvez ainsi, par exemple, ouvrir phpMyAdmin dans votre navigateur via localhost, alors qu'il tourne en réalité sur le serveur.

Redirection de port distante (remote port forwarding)

La redirection de port distante fonctionne dans le sens inverse : elle rend un service de votre ordinateur local accessible via le serveur. C'est pratique pour montrer un environnement de développement local à d'autres personnes.

Résoudre les problèmes SSH fréquents

En établissant une connexion SSH, vous pouvez rencontrer différents problèmes. Voici les plus fréquents et leurs solutions :

Connection refused

Cela signifie que le service SSH ne tourne pas sur le serveur ou qu'un pare-feu bloque la connexion. Vérifiez que le service SSH est actif et que le bon port est ouvert dans le pare-feu.

Permission denied

Votre mot de passe ou votre clé SSH n'est pas accepté. Vérifiez que vous utilisez le bon nom d'utilisateur et le bon mot de passe. Avec des clés SSH, vérifiez que votre clé publique est correctement placée sur le serveur et que les permissions du dossier .ssh sont correctes (700 pour le dossier, 600 pour les fichiers).

Connection timed out

Le serveur ne répond pas. Vérifiez que l'adresse IP est correcte, que le serveur est en ligne et qu'il n'y a pas de problème réseau. Vérifiez aussi que le port SSH n'a pas été modifié.

Host key verification failed

L'empreinte du serveur a changé depuis votre dernière connexion. Cela peut arriver après une réinstallation du serveur. Si vous êtes certain que le serveur est légitime, supprimez l'ancienne clé de votre fichier known_hosts.

Bonnes pratiques de sécurité SSH

Établir une connexion SSH est sûr par nature grâce au chiffrement, mais des mesures complémentaires renforcent encore la sécurité :

  • Utilisez des clés SSH à la place des mots de passe
  • Désactivez l'authentification par mot de passe après avoir configuré les clés
  • Changez le port SSH par défaut de 22 vers un numéro au hasard
  • Bloquez la connexion root via SSH (utilisez un utilisateur sudo)
  • Installez fail2ban pour bloquer les attaques par force brute
  • Maintenez votre client et votre serveur SSH à jour
  • Utilisez une phrase secrète sur votre clé privée

Consultez aussi notre guide pour sécuriser votre site web, avec d'autres mesures de sécurité à prendre une fois votre connexion SSH en place.

Établir une connexion SSH est une compétence fondamentale que tout administrateur de site web et de serveur doit maîtriser. Avec les étapes de ce guide, vous pouvez vous connecter en toute sécurité à votre serveur, transférer des fichiers et exploiter des fonctions avancées comme les tunnels SSH. Commencez par les fonctions de base et élargissez progressivement vos connaissances à mesure que vous gagnez en expérience dans la gestion de serveur.

SSH en pratique : les workflows courants

Une fois les bases acquises, des workflows SSH pratiques rendent votre gestion de serveur quotidienne plus efficace.

Gérer plusieurs serveurs avec SSH

Si vous gérez plusieurs serveurs, un fichier de configuration SSH bien organisé devient indispensable. Définissez des alias pour tous vos serveurs afin de pouvoir vous connecter avec une commande courte. Utilisez des outils comme Ansible ou Fabric pour exécuter les mêmes commandes sur plusieurs serveurs à la fois. Vous gagnez ainsi énormément de temps pour des tâches comme le déploiement de mises à jour ou le contrôle de l'état des serveurs.

Transfert d'agent SSH (agent forwarding)

Le transfert d'agent SSH vous permet d'utiliser vos clés SSH locales via un serveur intermédiaire. C'est utile lorsque vous vous connectez à des serveurs internes depuis un bastion. Au lieu de placer votre clé privée sur le serveur intermédiaire, l'authentification est transmise à votre agent SSH local. La sécurité s'en trouve nettement renforcée.

Tâches automatisées via SSH

Combinez une connexion SSH avec des scripts pour automatiser des tâches. Depuis un script local, vous pouvez exécuter des commandes SSH sur un serveur distant sans vous connecter de manière interactive. C'est la base des scripts de déploiement, des contrôles de surveillance et des sauvegardes automatisées. Veillez à ce que l'authentification par clé SSH soit correctement configurée pour un accès sans mot de passe.

Alternatives à SSH et outils complémentaires

En plus du client SSH standard, des outils complémentaires améliorent votre expérience de la gestion de serveur à distance. Mosh (Mobile Shell) est une alternative à SSH qui gère mieux les connexions Internet instables et se reconnecte automatiquement après une coupure. C'est particulièrement utile si vous êtes en déplacement et que vous établissez une connexion SSH via l'Internet mobile. Termius et Royal TSX proposent des clients SSH graphiques avec des fonctions avancées comme les onglets, la gestion des sessions et l'intégration SFTP. Pour les utilisateurs de Windows, Windows Terminal offre une interface moderne qui réunit les connexions SSH, PowerShell et les sessions WSL dans une seule fenêtre, avec des onglets et des thèmes personnalisables.

Connexion SSH : configuration avancée avec le fichier config

Lorsque vous vous connectez régulièrement à plusieurs serveurs, saisir des commandes SSH complètes devient vite peu pratique. Le fichier config SSH offre une solution élégante en enregistrant les données de connexion pour les réutiliser.

Le fichier config se trouve dans ~/.ssh/config et contient un bloc par serveur avec tous les paramètres de connexion. Au lieu d'une longue commande avec le port, le nom d'utilisateur et le fichier de clé, il vous suffit d'utiliser un alias court.

Options utiles du fichier config SSH

OptionFonctionExemple
HostAlias de la connexionHost mijn-server
HostNameAdresse IP ou nom de domaineHostName 192.168.1.100
UserNom d'utilisateurUser admin
PortNuméro de port SSHPort 7777
IdentityFileChemin vers la clé privéeIdentityFile ~/.ssh/id_server
ServerAliveIntervalIntervalle keep-alive en secondesServerAliveInterval 60
ProxyJumpSe connecter via un autre serveurProxyJump bastion

Avec ProxyJump, vous pouvez passer par un bastion (jump server) pour vous connecter à des serveurs qui ne sont pas directement accessibles depuis Internet. C'est une mesure de sécurité courante, qui fait passer tous les accès SSH par un point central.

Connexion SSH : tunnels et redirection de port

SSH est bien plus qu'une simple connexion terminal. Avec les tunnels SSH, vous pouvez établir des connexions sécurisées vers des services qui ne sont normalement pas directement accessibles. C'est une technique indispensable pour gérer en toute sécurité des bases de données, des interfaces web et d'autres services sur votre serveur.

Il existe trois formes de redirection de port SSH :

  • Redirection de port locale (-L) : rendez un service du serveur accessible via un port local. Idéal pour accéder en local, par exemple, à phpMyAdmin ou Grafana sans les exposer publiquement.
  • Redirection de port distante (-R) : rendez un service local accessible via le serveur. Pratique pour tester des webhooks ou partager un environnement de développement local.
  • Redirection de port dynamique (-D) : créez un proxy SOCKS via le serveur. Tout votre trafic passe, chiffré, par la connexion SSH.

La redirection de port locale est la variante la plus utilisée. Supposons que vous ayez sur votre serveur une base de données MySQL accessible uniquement en local (une bonne pratique pour la sécurité d'un VPS). Avec la redirection de port locale, vous reliez votre port local 3306 au port MySQL du serveur, afin de travailler avec un client de base de données local comme si la base de données tournait sur votre propre ordinateur.

Sécurité SSH : gestion des clés et bonnes pratiques

Une connexion SSH est sûre, mais seulement si vous gérez correctement les clés et la configuration. Suivez ces bonnes pratiques pour une sécurité maximale :

  1. Utilisez des clés ED25519 : c'est le type de clé le plus moderne et le plus sûr. Les clés RSA restent sûres à 4096 bits, mais ED25519 est plus rapide et plus compact.
  2. Protégez vos clés avec une phrase secrète : une phrase secrète (passphrase) sur votre clé privée vous protège même si quelqu'un accède à votre ordinateur. Utilisez ssh-agent pour mettre la phrase secrète en cache, afin de ne pas devoir la saisir à chaque fois.
  3. Renouvelez vos clés périodiquement : générez chaque année de nouvelles paires de clés et supprimez les anciennes clés publiques de vos serveurs.
  4. Limitez les clés par serveur : utilisez des paires de clés distinctes pour différents serveurs. Si une clé est compromise, les dégâts restent limités.
  5. Configurez AllowUsers : indiquez dans sshd_config quels utilisateurs peuvent se connecter via SSH. Cela empêche l'accès via des comptes non prévus.

Combinez la sécurité SSH avec l'authentification à deux facteurs pour une protection maximale. Utilisez des commandes Linux pour contrôler régulièrement votre configuration SSH et les clés liées sur votre serveur.

Connexion SSH : résoudre les problèmes fréquents

Lors de la mise en place et de la maintenance de connexions SSH, vous rencontrerez régulièrement des problèmes. Savoir les diagnostiquer et les résoudre rapidement est essentiel pour gérer efficacement un serveur.

Le problème le plus fréquent est « Connection refused ». Cela signifie que le service SSH ne tourne pas sur le serveur ou qu'un pare-feu bloque la connexion. Vérifiez via le panneau d'hébergement que le serveur est allumé et que le port SSH est ouvert. « Permission denied (publickey) » indique que votre clé SSH n'est pas acceptée. Vérifiez que votre clé publique a bien été ajoutée au fichier authorized_keys sur le serveur et que les droits des fichiers sont correctement configurés (700 pour le répertoire .ssh et 600 pour authorized_keys).

« Connection timed out » indique souvent un problème réseau ou un mauvais nom d'hôte et port. Vérifiez que vous utilisez la bonne adresse IP et le bon numéro de port. Avec « Host key verification failed », la clé du serveur a changé depuis votre dernière connexion, ce qui peut indiquer une réinstallation, mais aussi une attaque de l'homme du milieu (man-in-the-middle). Vérifiez par un autre canal que le serveur a réellement changé avant de supprimer l'ancienne clé.

Connexion SSH : SFTP et SCP pour le transfert de fichiers

Une connexion SSH offre non seulement un accès terminal, mais aussi un transfert de fichiers sécurisé via SFTP et SCP. Les deux protocoles utilisent la connexion SSH existante pour des transferts de fichiers chiffrés, ce qui les rend plus sûrs que le FTP non chiffré.

SCP (Secure Copy) est idéal pour des transferts de fichiers rapides et ponctuels. Sa syntaxe ressemble à celle de la commande cp, mais il fonctionne à travers le réseau. SFTP (SSH File Transfer Protocol) offre une session interactive comparable au FTP traditionnel, mais entièrement chiffrée. SFTP permet en outre de reprendre des transferts interrompus, de lister des répertoires et de gérer des fichiers sur le serveur. Pour un transfert de fichiers graphique, vous pouvez utiliser des outils comme FileZilla, WinSCP ou Cyberduck. Ils prennent en charge SFTP et offrent une interface glisser-déposer familière pour gérer les fichiers sur votre serveur.

Connexion SSH : automatisation et scripts

La puissance des connexions SSH ne se révèle vraiment que lorsque vous les combinez avec l'automatisation. Avec SSH, vous pouvez exécuter des commandes sur des serveurs distants sans session interactive, ce qui constitue la base de la gestion de serveur automatisée et des workflows de déploiement.

L'exécution de commandes à distance via SSH vous permet d'effectuer des tâches sur plusieurs serveurs en même temps. C'est particulièrement précieux pour appliquer des mises à jour de sécurité, contrôler l'état des serveurs ou déployer des changements de configuration sur tout un parc de serveurs. Des outils comme Ansible, Puppet et Chef s'appuient sur SSH pour automatiser entièrement la configuration des serveurs et la rendre reproductible.

Pour une automatisation simple, un script Bash qui exécute des commandes sur vos serveurs via SSH suffit. Combinez-le avec des tâches cron pour des opérations périodiques comme le contrôle de l'espace disque, le renouvellement des certificats SSL ou la réalisation de sauvegardes. Utilisez des clés SSH sans phrase secrète pour les tâches automatisées, mais limitez ces clés via le fichier authorized_keys à des commandes précises, afin qu'elles ne puissent pas être utilisées abusivement pour un accès illimité.