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.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535015.png)
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.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535077.jpg)
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 :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535181.jpg)
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
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535252.png)
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
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535293.png)
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.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535350.jpg)
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
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535428.jpg)
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.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535583.jpg)
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.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535585.png)
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.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535605.jpg)
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 :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816535798.png)
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 !