GNU/Linux >> Tutoriels Linux >  >> Linux

Top 10 des fonctionnalités SSH que vous DEVEZ connaître pour être plus productif

Cet article poursuit notre série d'articles Linux et couvre de nombreuses fonctionnalités et astuces SSH utiles pour améliorer votre productivité quotidienne. Nos visuels vous aideront à comprendre la configuration SSH, la gestion des fichiers de configuration, l'authentification, l'utilisation de plusieurs clés SSH et, bien sûr, le transfert de port SSH local et distant. Devenez un maître SSH en 10 minutes !

Qu'est-ce que SSH

Secure Shell, ou SSH, est un protocole réseau qui vous permet de vous connecter en toute sécurité à un serveur distant et d'utiliser une interface de console pour le gérer.

Lorsque vous établissez une connexion SSH, le serveur démarre une session shell pour vous. Après cela, vous pouvez taper les commandes dans votre client SSH, et elles seront exécutées sur un serveur distant.

Les administrateurs système utilisent ce protocole pour se connecter et gérer en toute sécurité des serveurs Linux distants.

Comment fonctionne SSH

Comme toute application réseau, SSH utilise deux composants :

  • Client SSH est une application que vous installez sur l'ordinateur que vous utiliserez pour vous connecter à l'ordinateur Linux du réseau. Le client SSH établit une connexion chiffrée entre votre ordinateur et le serveur distant.
  • Serveur SSH est une application serveur écoutant sur le port TCP/IP 22 pour les connexions client. Si le client a fourni les informations d'identification correctes, le serveur SSH crée une nouvelle session utilisateur et vous permet d'exécuter des commandes à distance.

Authentification SSH

SSH vous permet d'utiliser plusieurs méthodes d'authentification différentes. Les plus utilisés sont :

  • Authentification par mot de passe – on vous demande le nom d'utilisateur et le mot de passe pour accéder à l'hôte distant.
  • Authentification basée sur une clé SSH – vous utilisez des clés publiques et privées SSH pour l'authentification des utilisateurs.

Authentification basée sur une clé SSH

Cette méthode d'authentification est considérée comme plus sûre que l'utilisation de mots de passe. Voici comment cela fonctionne :

Algorithme d'authentification par clé SSH :

  • Le client initie la connexion SSH.
  • Le serveur renvoie un message aléatoire.
  • Le client chiffre le message reçu à l'aide d'une clé SSH privée et le renvoie au serveur.
  • Le serveur déchiffre le message du client à l'aide d'une clé SSH publique . Si le message est le même, le serveur autorise l'accès.

L'utilisation de l'authentification par mot de passe dans SSH n'est pas sécurisée. Si vous utilisez toujours l'authentification par mot de passe, vous devez le remplacer par l'authentification par clé SSH dès que possible.

Comment installer un client SSH

Dans la plupart des systèmes Linux et macOS, le serveur SSH est déjà installé et disponible pour vous par défaut. Mais si vous jouez avec Linux sur votre machine virtuelle, vous devrez peut-être l'installer.

Ubuntu

Pour les distributions Linux basées sur deb, vous pouvez installer le client SSH à l'aide des commandes suivantes :

sudo apt-get update
sudo apt-get -y install openssh-client

CentOS, Fedora, RedHat

Pour les distributions Linux basées sur yum, vous pouvez installer le client SSH à l'aide des commandes suivantes :

sudo yum -y install openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd

Windows

Pour le système d'exploitation Windows, PuTTY est devenu un client SSH de facto standard. Pour l'installer, téléchargez le programme d'installation MSI à partir du lien ci-dessus et suivez les instructions de Comment installer PuTTY sous Windows.

Voici la manière automatisée d'utiliser Chocolatey. Ouvrez la console PowerShell en mode "Exécuter en tant qu'administrateur") et exécutez les commandes suivantes :

Set-ExecutionPolicy RemoteSigned

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

choco install putty -y

Comment installer un serveur SSH

Dans la plupart des systèmes Linux et macOS, le client SSH est déjà installé et disponible pour vous par défaut. Mais si vous jouez avec Linux sur votre machine virtuelle, vous devrez peut-être l'installer.

Serveur SSH – Ubuntu

Pour les distributions Linux basées sur deb, vous pouvez installer le client SSH à l'aide des commandes suivantes :

sudo apt-get update
sudo apt-get -y install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

Serveur SSH – CentOS, Fedora, RedHat

Pour les distributions Linux basées sur yum, vous pouvez installer le client SSH à l'aide des commandes suivantes :

sudo yum -y install openssh
sudo systemctl enable sshd
sudo systemctl start sshd

Serveur SSH – Windows

Le serveur SSH ne peut pas être installé sur Windows. Dans le monde Windows, vous devez utiliser Remote Desktop et WinRM pour contrôler les serveurs Windows distants.

Créer une clé SSH

Dès que vous disposez du client SSH, vous pouvez créer des clés SSH privées et publiques utilisées pour l'authentification basée sur les clés SSH. Pour créer une clé SSH, exécutez la commande suivante dans le terminal :

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Cette commande créera une paire de clés RSA de 4 Ko :

  • ~/.ssh/id_rsa – Clé privée SSH.
  • ~/.ssh/id_rsa.pub – Clé publique SSH.

Important : Le fichier de clé privée SSH ne doit jamais être montré ou envoyé à qui que ce soit.

Configurer l'authentification basée sur une clé SSH

Pour configurer l'authentification basée sur une clé SSH sur le serveur, vous devez effectuer les étapes suivantes :

  • Connectez-vous au serveur.
  • Accédez au répertoire d'accueil de l'utilisateur.
  • Modifier le fichier ~/.ssh/authorized_keys et collez le contenu de la clé publique déposez-y.
  • Enregistrer les modifications.

~/.ssh/authorized_keys peut contenir autant d'enregistrements de fichier de clé publique que nécessaire. Ainsi, de nombreuses personnes différentes peuvent se connecter au serveur en utilisant le même nom de connexion mais leurs fichiers de clé privée.

Comment se connecter en utilisant SSH

Vous pouvez vous connecter à un serveur Linux distant à l'aide d'un client SSH en tapant la commande suivante :

ssh remote_username@host_ip_address

Utiliser différentes clés SSH pour différents serveurs

Il s'agit d'une situation courante dans laquelle vous devrez peut-être utiliser différents fichiers de clés SSH privées pour accéder à différents serveurs. Il existe plusieurs façons de le faire.

Spécifier la clé SSH dans la commande de connexion

Pour spécifier une clé privée requise dans le cadre de la commande de connexion SSH, utilisez -i drapeau :

ssh -i ~/.ssh/another_private_key remote_username@host_ip_address

Utiliser un agent SSH

Si vous n'avez pas trop de clés privées, vous pouvez utiliser un agent SSH.

SSH Agent est un programme qui charge votre clé SSH privée en mémoire et les utilise pour passer l'authentification SSH.

Linux

Démarrez l'agent ssh en arrière-plan :

eval "$(ssh-agent -s)"

Pour ajouter vos clés SSH à l'agent, utilisez les commandes suivantes :

ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/another_private_key

Windows

La distribution PuTTY contient Pagent, qui se trouve dans la barre d'état système et joue le même rôle. Faites un clic droit sur Pagent et ajoutez votre clé SSH.

Désormais, le client SSH utilisera toutes les clés privées chargées une par une pour passer l'authentification lors de la connexion SSH.

Fichier de configuration SSH

Un autre moyen utile de configurer les paramètres du client SSH consiste à utiliser ~/.ssh/config fichier.

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Host exceptional.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/another_private_key

Dans l'exemple ci-dessus, nous utilisons le ~/.ssh/id_rsa par défaut fichier de clé privée pour tous les serveurs, à l'exception de exceptional.com serveur. Pour le exceptional.com serveur, nous utiliserons ~/.ssh/another_private_key fichier.

Agent SSH et transfert de clé

Une autre fonctionnalité SSH préférée que j'utilise quotidiennement est le transfert de clé SSH. Il vous permet d'utiliser vos clés SSH locales pour vous connecter à différents serveurs.

Vous pouvez activer le transfert de clé SSH lors de l'exécution du client SSH en spécifiant -T drapeau :

ssh -T remote_username@host_ip_address

Ou vous pouvez activer cette configuration de manière permanente sur votre ~/.ssh/config fichier en spécifiant ForwardAgent yes :

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  ForwardAgent yes

Transfert de port SSH

Le protocole SSH vous permet de transférer non seulement la communication de l'agent SSH via un canal SSH sécurisé, mais également tout trafic TCP.

Si vous devez transférer le trafic UDP, utilisez nc en combinaison avec SSH.

Il existe deux types d'options de transfert de port.

Transfert de port local

La meilleure façon d'expliquer le transfert de port local SSH consiste à consulter le schéma suivant.

Dans ce diagramme, le hôte de saut le serveur dispose d'une connectivité privée au serveur Amazon RDS PostgreSQL.

Le client l'ordinateur portable peut se connecter au serveur Jump Host en utilisant le protocole SSH.

Le propriétaire du client l'ordinateur portable recherche un moyen de se connecter à l'instance Amazon RDS .

La fonctionnalité de transfert de port local SSH permet de lier un port sur le client ordinateur portable. Le trafic provenant du port lié est transféré via l'hôte de saut serveur vers une instance Amazon RDS .

Par conséquent, vous devez vous connecter à l'instance RDS à partir du client ordinateur portable, vous devez configurer pgsql sur l'ordinateur portable pour se connecter à localhost:15432 .

Voici comment vous devez établir une connexion SSH avec le Jump Host depuis le client Linux ou macOS ordinateur portable :

ssh -L 127.0.0.1:15432:rds-endpoint-url:5432 ec2-user@jump_host_ip

Si vous utilisez PuTTY, vous devez apporter des modifications dans Connexions – SSH – Tunnels avant de vous connecter au Jump Host.

Transfert de port distant

Le transfert de port distant SSH est une fonctionnalité un peu plus excitante qui résout le problème opposé. Il vous permet de lier le port sur le serveur ssh distant et de transférer le trafic arrivant sur ce port vers les réseaux derrière l'hôte client SSH.

Voici un exemple.

Dans notre exemple, nous avons un serveur isolé , qui n'a pas accès à Internet, et le client ordinateur portable, que nous utilisons pour nous connecter au Jump Host .

Trafic entre Jump Host et serveur isolé n'est pas limité.

Nous devons autoriser le serveur isolé pour se connecter à Internet. Comment pouvons-nous faire cela ?

Par exemple, nous pouvons lancer un conteneur Docker avec un proxy Squid sur l'ordinateur portable client sur le port 8080. Ensuite, nous pouvons nous connecter à Jump Host. en utilisant SSH. La fonctionnalité de redirection de port distant consiste à lier le port 8081 sur le hôte de saut pour rediriger le trafic vers le client port d'ordinateur portable 8080 .

Par conséquent, le serveur isolé pourra utiliser http://jump_host_ip:8081 en tant que serveur proxy.

Pour activer le transfert de port distant lors de la connexion SSH sur Linux ou macOS :

ssh -R 8081:localhost:8080 ec2-user@jump_host_ip

Pour les hôtes PuTTY et Windows :

Résumé

Dans cet article, j'ai couvert de nombreuses fonctionnalités SSH utiles, que j'utilise dans mon travail quotidien. J'espère que vous commencerez à les utiliser aussi. Si quelque chose n'est pas clair, veuillez me contacter dans la section des commentaires ci-dessous. Je serai plus qu'heureux de vous aider.

Si vous avez trouvé cet article utile, n'hésitez pas à m'aider à le diffuser dans le monde !


Linux
  1. Qu'est-ce que l'hébergement VPS ? Tout ce que vous devez savoir sur les serveurs privés virtuels

  2. 20 exemples de commandes OpenSSL que vous devez connaître

  3. Comment Ssh vers un serveur en utilisant un autre serveur ? ?

  4. Redhat vs Ubuntu :15 faits fondamentaux que vous devez savoir

  5. Pouvez-vous avoir plus d'un fichier ~/.ssh/config ?

20 choses essentielles à savoir si vous êtes sur le serveur Web Nginx

Tout ce que vous devez savoir sur le serveur Linux Ubuntu

Tout ce que vous devez savoir sur le serveur Linux OpenSSH

CentOS vs Ubuntu :vous devez connaître ces 15 faits fondamentaux

Top 50+ des commandes Linux que vous DEVEZ connaître

Top 10 des meilleurs docks Linux que vous DEVEZ essayer en 2020