Comment profiter au maximum d'OpenSSH

Comment profiter au maximum d'OpenSSH

OpenSSH est un outil de connectivité réseau et de connexion à distance qui crypte solidement tout le trafic, initialement développé par les développeurs OpenBSD pour une utilisation dans leur système d'exploitation. Compte tenu de l'accent mis par les développeurs OpenBSD sur la sécurité, il n'est pas surprenant qu'OpenSSH soit rapidement devenu l'implémentation de connexion à distance standard pour tous les systèmes d'exploitation Linux et UNIX. OpenSSH utilise un modèle de serveur client avec le ssh Commande fournissant des fonctionnalités du client et SSHD Fournir des fonctionnalités de serveur.

Dans ce tutoriel, vous apprendrez:

  • Comment installer OpenSSH
  • Comment se connecter à un shell distant
  • Comment copier des fichiers entre les machines avec SCP
  • Comment activer l'authentification basée sur les clés et désactiver la connexion basée sur le mot de passe
  • Comment enregistrer les configurations de machines fréquemment consultées pour des connexions plus faciles
  • Comment monter un système de fichiers distant sur le protocoque SSH
  • Comment utiliser le transfert de port / tunneling
  • Pour accéder à une machine derrière NAT / pare-feu
  • Pour créer un proxy Web
Comment profiter au maximum d'OpenSSH - Conseils et astuces

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Les systèmes basés sur Debian, basés sur un chapeau rouge et basés sur une arche sont explicitement couverts, mais la suite OpenSSH est indépendante de la distribution et toutes les instructions devraient fonctionner pour toute distribution qui utilise SystemD comme système d'initié.
Logiciel Opensh
Autre Privilèges racine pour modifier les fichiers de configuration
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Installation d'OpenSSH

La plupart des distributions fourniront la possibilité d'installer OpenSSH lors de leur installation initiale, mais elle peut toujours être installée 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 l'arc, le client et le serveur sont installés en tant que package unique (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 n'importe quelle 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 version ultérieure, remplacez Yum par DNF)

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

Sur le système basé sur la voûte

$ sudo pacman -s openssh 

Après avoir installé le serveur SSH, certaines distributions permettront au service SSHD par défaut et d'autres ne. Sur les versions récentes des distributions ci-dessus, entrez ce qui suit pour s'assurer que le démon SSH est activé et peut être connecté par les clients.

$ sudo systemctl start sshd $ sudo systemctl activer sshd 

Cela démarrera le service maintenant et sur chaque botte suivante.

Connectez-vous à un shell distant

L'enregistrement à un shell distant est l'utilisation la plus élémentaire 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 les deux ont ouvert SSH. Remarque: remplacez «nom d'utilisateur» par le nom d'utilisateur de l'utilisateur que vous souhaitez vous connecter en tant que. 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 sur Internet, remplacez «hôte» par l'adresse IP ou le nom de domaine de cette machine.

$ ssh username @ host 

Par défaut, SSHD exige que le mot de passe de l'utilisateur s'authentifie, alors entrez le mot de passe de l'utilisateur et maintenant vous êtes connecté à cette machine en tant qu'utilisateur. Si l'utilisateur est l'utilisateur racine ou a 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 minuscules, plus à ce sujet plus tard) entre SSH et le reste de la commande.

Copie de fichiers entre les machines

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

Par exemple, pour copier le fichier liste de choses à faire.SMS du client ~ / Documents dossier à la machine distante ~ / Téléchargements dossier entrez ce qui suit.

$ SCP ~ / Documents / Todolist.txt username @ hôte: ~ / téléchargements / 

De même, vous pouvez copier un fichier du serveur au client. Fournissez simplement le chemin du fichier sur le serveur, suivi du chemin d'accès souhaité sur la machine client. Par exemple, nous pouvons copier le même liste de choses à faire.SMS que nous venons de télécharger, dans le / tmp Répertoire de la machine locale en émettant la commande suivante.

$ SCP Username @ hôte: ~ / Téléchargements / 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 que c'est un capital P contrairement aux minuscules p utilisé par la commande ssh. Le processus de copie des répertoires est le même, sauf que vous devez spécifier le «-r»Flag pour copier récursivement un répertoire avec toutes ses sous-répertoires et fichiers qui y sont. La commande suivante copiera l'intégralité du répertoire des documents de l'utilisateur local vers le dossier de téléchargements de l'utilisateur distant.

$ scp -r ~ / documents nom d'utilisateur @ hôte: ~ / téléchargements / 

Comme alternative à la commande SCP, vous pouvez utiliser la commande SFTP pour transférer des fichiers entre les 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é, vous pouvez être bien avec l'authentification du mot de passe. Cependant, si vous l'utilisez sur Internet, l'activation de l'authentification basée sur les clés et la désactivation de l'authentification du mot de passe sur votre serveur de face Internet est recommandée pour une sécurité supplémentaire. Cela peut également être utile si vous souhaitez simplement éviter d'avoir à taper le mot de passe pour vous connecter ou si vous utilisez la machine du serveur sur le WiFi public.

L'authentification basée sur la clé utilise une constante de paire de clés cryptographique d'une clé privée qui est stockée uniquement sur la machine client locale et une clé publique qui est stockée sur le serveur distant.

Premièrement, générez la paire de clés privée / publique sur la machine client locale.

$ ssh-keygen -t rsa 

Puis téléchargez uniquement la clé publique de la machine distante

$ ssh-copy-id -i ~ /.ssh / id_rsa.Nom d'utilisateur de pub @ hôte 

Maintenant, connectez-vous au serveur distant et si vous n'êtes pas invité au mot de passe de l'utilisateur, la connexion basée sur la clé fonctionne et vous pouvez désactiver la connexion basée sur le mot de passe.
En utilisant votre éditeur de texte préféré ouvert / etc / ssh / sshd_config comme racine ou avec sudo

$ sudo vim / etc / ssh / sshd_config 


et apporter les modifications suivantes en changeant Oui pour Non pour ces champs et les désommenter si nécessaire (supprimer # si la ligne commence par elle).

ChallengeResponSeutinghentication pas de mot de passe-authentification non usepam non 

Ensuite, rechargez le service SSHD.

$ sudo systemctl reload ssh 

Enregistrer les configurations de machines fréquemment consultées pour des connexions plus faciles

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

$ ssh -p 1666 bob @ remotemachine 

ressemble à ça.

L'utilisateur de Remotemachine hôte Bob Hostname Remotemachine Port 1666 

Ensuite, vous pouvez accéder à cette machine en utilisant la commande suivante à l'avenir.

$ SSH Remotemachine 

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

Bien que cela ne fasse pas partie de la suite OpenSSH, SSHFS peut être installé à l'aide du gestionnaire de packages, puis utilisé pour monter des systèmes de fichiers distants sur le réseau. Supposons que vous souhaitez accéder au répertoire domestique de User1 @ Machine1 sur votre système de fichiers local.

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

$ mkdir sshmount 

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

$ sshfs user1 @ machine1: / home / user1 sshmount 

Pour démontrer le problème du système de fichiers, soit les commandes suivantes

$ fusermount -u sshmount 

ou

$ sudo umount sshmount 


Remise des portes / tunnels

Le transfert de port, également connu sous le nom de tunneling, peut être utilisé pour fournir un chiffrement pour les applications et les protocoles dont le trafic réseau serait autrement envoyé dans le clair. Les deux exemples suivants montrent deux autres utilisations de la rediffusion des ports.

Accéder à un shell distant sur une machine derrière Nat ou pare-feu

Et si vous voulez SSH sur Internet dans une machine qui est derrière Nat ou un pare-feu? Dans ce scénario, il y a 3 machines.

  1. La machine derrière Nat que vous souhaitez vous connecter à distance
  2. Un serveur face à Internet auquel vous avez un 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 -L Communiquez les connexions vers le port local spécifié au port hôte spécifié. De même, le -R Communiquez 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 la machine 3, entrez les commandes suivantes. Remarque: la deuxième commande doit être ouverte dans une nouvelle fenêtre de terminal ou TTY.

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

La première commande semblera 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 semble également être connectée à la machine 2 normalement, mais elle lie le port 10001 de la machine 3 au port 10125 sur la machine 2 afin que les connexions au port 10001 sur la machine 3 soient transmises au port 10125 sur la machine 2, qui est ensuite transmise au port 22 sur la machine 1. Ensuite, Finalement, Machine 3 a pu se connecter à la machine 1, en se connectant au port 10001 sur lui-même qu'il a transmis dans le tunnel que nous avons créé.

Utilisation d'OpenSSH comme proxy Web

En utilisant le -D indicateur Vous pouvez utiliser votre serveur SSH distant comme proxy de chaussettes. Cela peut être particulièrement utile pour la navigation sur le Web, par exemple si vous êtes sous WiFi public et que vous souhaitez une confidentialité supplémentaire, ou si vous êtes sur un travail / école / autre réseau qui peut alimenter le trafic ou censurer le contenu.

Émettez simplement la commande suivante et vous pourrez utiliser le port 8888 Votre machine locale en tant que proxy de chaussettes, afin que les connexions au port 8888 soient en toute sécurité vers le serveur distant et entièrement cryptée à partir des yeux indiscrets sur le réseau local.

ssh -d 8888 nom d'utilisateur @ hôte 
Configuration du proxy de chaussettes dans Firefox

Tutoriels Linux connexes:

  • Comment empêcher la vérification de la connectivité NetworkManager
  • Linux: Configuration SSH
  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Comment configurer un serveur OpenVPN sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Comment générer et gérer les clés SSH sur Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Ubuntu 20.04 Server SSH
  • Masterring Bash Script Loops