GNU/Linux >> Tutoriels Linux >  >> Linux

Commande SSH

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 updatesudo 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.


Linux
  1. Oring avec True dans une commande sur Ssh ?

  2. Ssh vers plusieurs hôtes et exécuter une commande ?

  3. Commande Linux mv

  4. Groupe DH GEX hors plage

  5. Commande Linux pour attendre qu'un serveur SSH soit opérationnel

Commande W sous Linux

À la commande sous Linux

Comment transmettre un mot de passe à la commande SSH sous Linux

Utilisation de la commande SSH dans les systèmes Linux/Unix

Connectez-vous avec OpenSSH (Windows)

Faire une commande de longue durée sur ssh