Secure Shell (SSH) est un protocole de réseau cryptographique utilisé pour une connexion chiffrée entre un client et un serveur. Le client ssh crée une connexion sécurisée au serveur SSH sur une machine distante. La connexion cryptée peut être utilisée pour exécuter des commandes sur le serveur, la tunnellisation X11, la redirection de port, etc.
Il existe un certain nombre de clients SSH disponibles, à la fois gratuits et commerciaux, OpenSSH étant le client le plus utilisé. Il est disponible sur toutes les principales plates-formes, y compris Linux, OpenBSD, Windows et macOS.
Cet article explique comment utiliser le client en ligne de commande OpenSSH (ssh
) pour se connecter à une machine distante et exécuter des commandes ou effectuer d'autres opérations.
Installation du client OpenSSH #
Le programme client OpenSSH s'appelle ssh
et peut être invoqué depuis le terminal. Le package client OpenSSH fournit également d'autres utilitaires SSH tels que scp
et sftp
qui sont installés à côté de ssh
commande.
Installation du client OpenSSH sous Linux #
Le client OpenSSH est préinstallé sur la plupart des distributions Linux par défaut. Si le client ssh n'est pas installé sur votre système, vous pouvez l'installer à l'aide de votre gestionnaire de packages de distribution.
Installer OpenSSH sur Ubuntu et Debian #
sudo apt update
sudo apt install openssh-client
Installer OpenSSH sur CentOS et Fedora #
sudo dnf install openssh-clients
Installation du client OpenSSH sur Windows 10 #
La plupart des utilisateurs Windows utilisent Putty pour se connecter à une machine distante via SSH. Cependant, les dernières versions de Windows 10 incluent un client et un serveur OpenSSH. Les deux packages peuvent être installés via l'interface graphique ou PowerShell.
Pour trouver le nom exact du package OpenSSH, tapez la commande suivante :
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
La commande devrait renvoyer quelque chose comme ceci :
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Une fois que vous connaissez le nom du package, installez-le en exécutant :
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
En cas de succès, la sortie ressemblera à ceci :
Path :
Online : True
RestartNeeded : False
Installation du client OpenSSH sur macOS #
macOS est livré avec le client OpenSSH installé par défaut.
Comment utiliser le ssh
Commande #
Les conditions suivantes doivent être remplies pour pouvoir se connecter à une machine distante via SSH :
- Un serveur SSH doit être exécuté sur la machine distante.
- Le port SSH doit être ouvert dans le pare-feu de la machine distante.
- Vous devez connaître le nom d'utilisateur et le mot de passe du compte distant. Le compte doit disposer des privilèges appropriés pour la connexion à distance.
La syntaxe de base du ssh
commande est la suivante :
ssh [OPTIONS] [USER@]:HOST
Pour utiliser le ssh
commande, ouvrez votre Terminal ou PowerShell et tapez ssh
suivi du nom d'hôte distant :
ssh ssh.linuxize.com
Lorsque vous vous connectez à une machine distante via SSH pour la première fois, vous verrez un message comme ci-dessous.
The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?
Chaque hôte a une empreinte digitale unique qui est stockée dans le ~/.ssh/known_hosts
fichier.
Tapez yes
pour stocker l'empreinte digitale à distance, et vous serez invité à entrer votre mot de passe.
Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.
[email protected]'s password:
Une fois que vous avez entré le mot de passe, vous serez connecté à la machine distante.
Lorsque le nom d'utilisateur n'est pas donné, le ssh
La commande utilise le nom de connexion actuel du système.
Pour vous connecter en tant qu'utilisateur différent, spécifiez le nom d'utilisateur et l'hôte au format suivant :
ssh username@hostname
Le nom d'utilisateur peut également être spécifié avec le -l
choix :
ssh -l username hostname
Par défaut, lorsqu'aucun port n'est donné, le client SSH essaiera de se connecter au serveur distant sur le port 22. Sur certains serveurs, les administrateurs modifient le port SSH par défaut pour ajouter une couche de sécurité supplémentaire au serveur en réduisant le risque de attaques.
Pour vous connecter sur un port autre que celui par défaut, utilisez le -p
option pour spécifier le port :
ssh -p 5522 username@hostname
Si vous rencontrez des problèmes d'authentification ou de connexion, utilisez le -v
option pour indiquer ssh
pour imprimer les messages de débogage :
ssh -v username@hostname
Pour augmenter le niveau de verbosité, utilisez -vv
ou -vvv
.
Le ssh
La commande accepte un certain nombre d'options.
Pour une liste complète de toutes les options, lisez le ssh
page de manuel en tapant man ssh
dans votre terminal.
Fichier de configuration SSH #
Si vous vous connectez quotidiennement à plusieurs systèmes distants via SSH, vous constaterez qu'il est difficile, voire impossible, de se souvenir de toutes les adresses IP distantes, des différents noms d'utilisateur, des ports non standard et des diverses options de ligne de commande. /P>
Le client OpenSSH lit les options définies dans le fichier de configuration par utilisateur (~/.ssh/config
). Dans ce fichier, vous pouvez stocker différentes options SSH pour chaque machine distante à laquelle vous vous connectez.
Un exemple de configuration SSH est présenté ci-dessous :
Host dev
HostName dev.linuxize.com
User mike
Port 4422
Lorsque vous appelez le client ssh en tapant ssh dev
, la commande lira le ~/.ssh/config
fichier et utilisez les détails de connexion spécifiés pour l'hôte de développement. Dans cet exemple, ssh dev
est équivalent à ce qui suit :
ssh -p 4422 [email protected]
Pour plus d'informations, consultez l'article sur le fichier de configuration SSH.
Numéro d'authentification par clé publique
Le protocole SSH prend en charge divers mécanismes d'authentification.
Le mécanisme d'authentification par clé publique vous permet de vous connecter au serveur distant sans avoir à saisir votre mot de passe.
Cette méthode fonctionne en générant une paire de clés cryptographiques utilisées pour l'authentification. La clé privée est stockée sur l'appareil client et la clé publique est transférée à chaque serveur distant auquel vous souhaitez vous connecter. Le serveur distant doit être configuré pour accepter l'authentification par clé.
Si vous n'avez pas encore de paire de clés SSH sur votre machine locale, vous pouvez en générer une en tapant :
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Il vous sera demandé de saisir une phrase de passe sécurisée. Que vous souhaitiez utiliser une phrase de passe, c'est à vous de décider.
Une fois que vous avez votre paire de clés, copiez la clé publique sur le serveur distant :
ssh-copy-id username@hostname
Entrez le mot de passe de l'utilisateur distant et la clé publique sera ajoutée à l'utilisateur distant authorized_keys
fichier.
Une fois la clé téléchargée, vous pouvez vous connecter au serveur distant sans être invité à entrer un mot de passe.
En définissant une authentification basée sur une clé, vous pouvez simplifier le processus de connexion et augmenter la sécurité globale du serveur.
N° de transfert de port
Le tunneling SSH ou le transfert de port SSH est une méthode de création d'une connexion SSH cryptée entre un client et une machine serveur via laquelle les ports de services peuvent être relayés.
Le transfert SSH est utile pour transporter les données réseau des services qui utilisent un protocole non chiffré, tel que VNC ou FTP, accéder au contenu géo-restreint ou contourner les pare-feu intermédiaires. Fondamentalement, vous pouvez transférer n'importe quel port TCP et tunneliser le trafic via une connexion SSH sécurisée.
Il existe trois types de transfert de port SSH :
# de transfert de port local
Le transfert de port local vous permet de transférer une connexion de l'hôte client vers l'hôte du serveur SSH, puis vers le port de l'hôte de destination.
Pour créer une redirection de port local, passez le -L
option à ssh
client :
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
L'option -f indique au ssh
commande à exécuter en arrière-plan et -N
de ne pas exécuter de commande à distance.
# de transfert de port distant
Le transfert de port distant est l'opposé du transfert de port local. Il transfère un port de l'hôte serveur à l'hôte client, puis au port de l'hôte de destination.
Le -R
l'option indique ssh
pour créer une redirection de port distant :
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
# de transfert de port dynamique
La redirection de port dynamique crée un serveur proxy SOCKS qui permet la communication sur une plage de ports.
Pour créer une redirection de port dynamique (SOCKS) passez le -D
option au client ssh :
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
Pour des informations plus détaillées et des instructions détaillées, consultez l'article sur la configuration du tunnel SSH (transfert de port).
Conclusion #
Pour vous connecter à un serveur distant via SSH, utilisez le ssh
commande suivie du nom d'utilisateur et du nom d'hôte distants (ssh username@hostname
).
Savoir utiliser le ssh
La commande est essentielle pour gérer les serveurs distants.
Si vous avez des questions, veuillez laisser un commentaire ci-dessous.