Recherche de site Web

Comment tirer le meilleur parti d’OpenSSH


OpenSSH est un outil de connectivité réseau et de connexion à distance qui crypte en toute sécurité tout le trafic, développé à l’origine par les développeurs OpenBSD pour être utilisé dans leur système d’exploitation. Compte tenu de l’objectif principal des développeurs d’OpenBSD sur la sécurité, il n’est pas surprenant qu’OpenSSH soit rapidement devenu l’implémentation standard de la connexion à distance pour tous les systèmes d’exploitation Linux et Unix. OpenSSH utilise un modèle client-serveur avec la commande ssh fournissant les fonctionnalités client et sshd fournissant les fonctionnalités serveur.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer OpenSSH
  • Comment se connecter à un shell distant
  • Comment copier des fichiers entre machines avec scp
  • Comment activer l’authentification par clé et désactiver la connexion par mot de passe
  • Comment enregistrer les configurations des machines fréquemment utilisées pour faciliter les connexions
  • Comment monter un système de fichiers distant sur ssh protocal
  • Comment utiliser la redirection de port/tunneling
  • pour accéder à une machine derrière NAT/pare-feu
  • Pour créer un proxy Web

Comment tirer le meilleur parti d’OpenSSH – Trucs et astuces

Configuration logicielle requise et conventions utilisées

Installation d’OpenSSH

La plupart des distributions offrent la possibilité d’installer OpenSSH lors de leur installation initiale, mais il peut toujours être installé manuellement si cette option n’a pas été choisie. Sur les systèmes basés sur Debian et Red Hat, vous devrez installer le serveur et le client séparément, tandis que sur les systèmes basés sur Arch, le client et le serveur sont installés comme un seul paquet (voir l’exemple ci-dessous). Notez que si vous utilisez un pare-feu, assurez-vous d’ouvrir le port 22 pour le trafic entrant sur toute machine que vous souhaitez utiliser comme serveur.

Sur les systèmes basés sur Debian

sudo apt-get install openssh-server
sudo apt-get install openssh-client

Sur les systèmes basés sur Red Hat (remarque : sur Fedora version 22 ou ultérieure, remplacez yum par dnf)

sudo yum install openssh-server
sudo yum install openssh-client

Sur système basé sur Arch

sudo pacman -S openssh

Après l’installation du serveur ssh, certaines distributions activeront le service sshd par défaut et d’autres non. Sur les versions récentes des distributions ci-dessus, entrez ce qui suit pour vous assurer que le démon ssh est activé et peut être connecté par les clients.

sudo systemctl start sshd
sudo systemctl enable sshd

Cela démarrera le service maintenant et à chaque démarrage suivant.

Se connecter à un shell distant

La connexion à un shell distant est l’utilisation la plus basique et la plus courante d’OpenSSH. La commande suivante vous permettra de vous connecter d’une machine en réseau à une autre, en supposant que Open SSH soit installé sur les deux. REMARQUE : Remplacez « nom d’utilisateur » par le nom d’utilisateur de l’utilisateur sous lequel vous souhaitez vous connecter. Si vous vous connectez à un autre ordinateur sur le même réseau que vous, remplacez « hôte » par l’adresse IP ou le nom d’hôte de cette machine. Si vous vous connectez à une machine via Internet, remplacez « hôte » par l’adresse IP ou le nom de domaine de cette machine.

ssh username@host

Par défaut, sshd exige le mot de passe de l’utilisateur pour s’authentifier, alors entrez le mot de passe de l’utilisateur et vous êtes maintenant connecté à cette machine en tant qu’utilisateur. Si l’utilisateur est l’utilisateur root ou s’il dispose des privilèges sudo, vous pouvez désormais administrer complètement la machine à distance. Notez que si vous vous connectez à un serveur qui utilise un port autre que le 22 par défaut (par exemple 10001), vous devrez spécifier le numéro de port en insérant " -p 10001 " (le « -p " doit être en minuscules, nous y reviendrons plus tard) entre ssh et le reste de la commande.

Copie de fichiers entre machines

La commande scp peut être utilisée pour copier des fichiers vers ou depuis une machine ou une autre. Pour ce faire, vous devez d’abord fournir le chemin d’accès du fichier que vous souhaitez copier, puis le chemin d’accès où vous souhaitez que le fichier soit copié.

Par exemple, pour copier le fichier todolist.txt du dossier ~/Documents du client vers le dossier ~/Téléchargements de la machine distante, entrez ce qui suit.

scp ~/Documents/todolist.txt username@host:~/Downloads/

De même, vous pouvez copier un fichier du serveur vers le client. Il suffit de fournir le chemin d’accès du fichier sur le serveur, suivi du chemin d’accès souhaité sur l’ordinateur client. Par exemple, nous pouvons copier le même todolist.txt que nous venons de télécharger, dans le répertoire /tmp de la machine locale en exécutant la commande suivante.

scp username@host:~/Downloads/todolist.txt /tmp/

Notez que si vous copiez vers/depuis un serveur qui utilise un port autre que le 22 par défaut (par exemple 10001), vous devrez spécifier le numéro de port en insérant " -P 10001 " entre scp et le reste de la commande. Notez également qu’il s’agit d’un P majuscule par opposition au p minuscule utilisé par la commande ssh. Le processus de copie des répertoires est le même, sauf que vous devez spécifier l’option « -r » pour copier récursivement un répertoire avec tous ses sous-répertoires et fichiers qu’il contient. La commande suivante copiera l’intégralité du répertoire Documents de l’utilisateur local vers le dossier Téléchargements de l’utilisateur distant.

scp -r ~/Documents username@host:~/Downloads/

Comme alternative à la commande scp, vous pouvez utiliser la commande sftp pour transférer des fichiers entre machines. Il se comporte comme la commande ftp classique, mais contrairement à ftp, il est entièrement crypté.

Configuration de l’authentification basée sur les clés

Si vous utilisez OpenSSH sur votre réseau domestique sécurisé, l’authentification par mot de passe peut vous convenir. Toutefois, si vous l’utilisez sur Internet, il est recommandé d’activer l’authentification par clé et de désactiver l’authentification par mot de passe sur votre serveur connecté à Internet pour plus de sécurité. Cela peut également être utile si vous voulez simplement éviter d’avoir à taper le mot de passe pour vous connecter ou si vous utilisez la machine serveur sur le wifi public.

L’authentification basée sur la clé utilise une paire de clés cryptographiques composée d’une clé privée stockée uniquement sur l’ordinateur client local et d’une clé publique stockée sur le serveur distant.

Tout d’abord, générez la paire de clés privée/publique sur l’ordinateur client local.

ssh-keygen -t rsa

Ensuite, téléchargez uniquement la clé publique sur la machine distante

ssh-copy-id -i ~/.ssh/id_rsa.pub username@host

Connectez-vous maintenant au serveur distant et si vous n’êtes pas invité à entrer le mot de passe de l’utilisateur, la connexion par clé fonctionne et vous pouvez désactiver la connexion basée sur le mot de passe.
À l’aide de votre éditeur de texte préféré, ouvrez /etc/ssh/sshd_config en tant que root ou avec sudo

sudo vim /etc/ssh/sshd_config

et apportez les modifications suivantes en changeant oui en non pour ces champs et en les décommentant si nécessaire (Supprimez # si la ligne commence par celui-ci).

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Ensuite, rechargez le service sshd.

sudo systemctl reload ssh

Enregistrez les configurations des machines fréquemment consultées pour faciliter les connexions

Il peut être utile d’enregistrer les configurations des machines fréquemment consultées afin de pouvoir s’y connecter plus facilement ; Surtout s’ils ont une écoute SSHD sur un port non par défaut (pas 22). Pour ce faire, vous ajoutez des entrées à votre fichier ~/.ssh/config.
Une entrée pour une machine à laquelle vous vous connecteriez à l’aide de la commande suivante

ssh -p 1666 bob@remotemachine

ressemble à ça.

host remotemachine
    User bob
    Hostname remotemachine
    Port 1666

Ensuite, vous pouvez accéder à cette machine à l’aide de la commande suivante à l’avenir.

ssh remotemachine

Montage d’un système de fichiers réseau avec SSHFS

Bien qu’il ne fasse pas partie de la suite OpenSSH, sshfs peut être installé à l’aide du gestionnaire de paquets, puis utilisé pour monter des systèmes de fichiers distants sur le réseau. Supposons que vous souhaitiez accéder au répertoire personnel de user1@machine1 sur votre système de fichiers local.

Créez le répertoire dans lequel vous souhaitez monter le système de fichiers distant.

mkdir sshmount

Montez le système de fichiers en spécifiant le chemin distant et le chemin local où vous souhaitez le monter.

sshfs user1@machine1:/home/user1 sshmount

Pour démonter le système de fichiers, exécutez l’une des commandes suivantes

fusermount -u sshmount

ou

sudo umount sshmount

Redirection de port/tunneling

La redirection de port, également connue sous le nom de tunneling, peut être utilisée pour fournir un chiffrement aux applications et aux protocoles dont le trafic réseau serait autrement envoyé en clair. Les deux exemples suivants montrent deux autres utilisations de la redirection de port.

Accès à un shell distant sur une machine qui se trouve derrière NAT ou un pare-feu

Que se passe-t-il si vous souhaitez utiliser un système SSH via Internet pour accéder à une machine qui se trouve derrière un NAT ou un pare-feu ? Dans ce scénario, il y a 3 machines.

  1. La machine derrière NAT à laquelle vous souhaitez vous connecter à distance
  2. Un serveur connecté à Internet auquel vous avez accès ssh
  3. Une machine sur un autre réseau que vous souhaitez utiliser pour vous connecter à la machine 1 sur Internet

Pour la commande ssh, le commutateur -L transfère les connexions au port local spécifié vers le port hôte spécifié. De même, le commutateur -R transfère les connexions vers le port distant spécifié vers le port local spécifié.

Sur la machine 1, entrez la commande suivante.

user1@1 $ ssh -R 10125:localhost:22 user2@2

Sur l’ordinateur 3, entrez les commandes suivantes. REMARQUE : La deuxième commande doit être ouverte dans une nouvelle fenêtre de terminal ou dans un nouveau ATS.

user3@3 $ ssh -L 10001:localhost:10125 user2@2
user3@3 $ ssh user1@localhost -p 10001

La première commande semblera être connectée à la machine 2 normalement, mais elle liera également le port 22 (service sshd) de la machine 1 au port 10125 sur la machine 2 afin que les connexions au port 10125 sur la machine 2 soient transmises au port 22 sur la machine 1. La deuxième commande semblera également s’être connectée normalement à la machine 2, mais elle lie le port 10001 de la machine 3 au port 10125 sur la machine 2 de sorte que les connexions au port 10001 sur la machine 3 sont transmises au port 10125 sur la machine 2, qui est ensuite transférée au port 22 sur la machine 1. Puis, enfin, la machine 3 a pu se connecter à la machine 1, en se connectant au port 10001 sur elle-même qu’elle a transmis via le tunnel que nous avons créé.

Utilisation d’OpenSSH en tant que proxy Web

En utilisant l’indicateur -D, vous pouvez utiliser votre serveur ssh distant comme proxy SOCKS. Cela peut être particulièrement utile pour la navigation sur le Web, par exemple si vous êtes sur le WiFi public et que vous souhaitez plus de confidentialité, ou si vous êtes sur un réseau professionnel/scolaire/autre qui peut espionner le trafic ou censurer le contenu.

Il suffit d’exécuter la commande suivante et vous pourrez utiliser le port 8888 de votre machine locale en tant que proxy SOCKS, de sorte que les connexions au port 8888 seront transmises en toute sécurité au serveur distant et entièrement cryptées à l’abri des regards indiscrets sur le réseau local.

ssh -D 8888 username@host

Configuration du proxy SOCKS dans Firefox

Articles connexes: