Recherche de site Web

Comment configurer des connexions SSH personnalisées pour simplifier l'accès à distance


SSH (Client SSH) est un programme permettant d'accéder à distance à une machine, il permet à un utilisateur d'exécuter des commandes sur un hôte distant. Il s'agit de l'une des méthodes les plus recommandées pour se connecter à un hôte distant, car elle est conçue pour fournir des communications cryptées sécurisées entre deux hôtes non fiables sur un réseau non sécurisé.

SSH utilise à la fois un fichier de configuration à l'échelle du système et un fichier de configuration (personnalisé) spécifique à l'utilisateur. Dans ce didacticiel, nous expliquerons comment créer un fichier de configuration ssh personnalisé et utiliser certaines options pour vous connecter à des hôtes distants.

Exigences:

  1. Vous devez avoir installé le client OpenSSH sur votre bureau Linux.
  2. Comprendre les options courantes utilisées pour les connexions à distance via ssh.

Fichiers de configuration du client SSH

Vous trouverez ci-dessous les emplacements des fichiers de configuration du client ssh :

  1. /etc/ssh/ssh_config – il s'agit du fichier de configuration par défaut à l'échelle du système. Il contient des paramètres qui s'appliquent à tous les utilisateurs de la machine client ssh.
  2. ~/.ssh/config ou $HOME/.ssh/config – est le fichier de configuration spécifique à l'utilisateur/personnalisé. Il a des configurations qui s'appliquent à un utilisateur spécifique. Il remplace donc les paramètres par défaut dans le fichier de configuration à l'échelle du système. C'est le fichier que nous allons créer et utiliser.

Par défaut, les utilisateurs sont authentifiés en ssh à l'aide de mots de passe, cependant, vous pouvez configurer une connexion sans mot de passe ssh à l'aide de ssh keygen en 5 étapes simples.

Remarque : Si le répertoire ~/.ssh n'existe pas sur votre système de bureau, créez-le avec les autorisations suivantes.


mkdir -p ~/.ssh
chmod 0700 ~/.ssh   

La commande chmod ci-dessus implique que seul l'utilisateur peut disposer des autorisations de lecture, d'écriture et d'exécution sur le répertoire, comme l'exigent les paramètres ssh.

Comment créer un fichier de configuration SSH spécifique à l'utilisateur

Ce fichier n'est généralement pas créé par défaut, vous devez donc le créer avec les autorisations de lecture/écriture pour l'utilisateur uniquement.


touch ~/.ssh/config
chmod 0700 ~/.ssh/config

Le fichier ci-dessus contient des sections définies par les spécifications des hôtes, et une section n'est appliquée qu'aux hôtes qui correspondent à l'un des modèles définis dans la spécification.

Le format conventionnel de ~/.ssh/config est le suivant, et toutes les lignes vides ainsi que les lignes commençant par '#' sont considérées comme des commentaires :


Host    host1
	ssh_option1=value1
	ssh_option2=value1 value2
	ssh_option3=value1 

Host    host2
	ssh_option1=value1
	ssh_option2=value1 value2

Host  *
	ssh_option1=value1
	ssh_option2=value1 value2

À partir du format ci-dessus :

  1. Host host1 – est une définition d'en-tête pour host1, c'est ici que commence une spécification d'hôte et se termine par la définition d'en-tête suivante, Host host2 faisant un volet.
  2. host1, host2 sont simplement des alias d'hôte à utiliser sur la ligne de commande, ce ne sont pas les noms d'hôte réels des hôtes distants.
  3. Les options de configuration telles que ssh_option1=value1, ssh_option2=value1 value2 s'appliquent à un hôte correspondant et doivent être en retrait pour un formatage bien organisé.
  4. Pour une option telle que ssh_option2=value1 value2, la valeur value1 est prise en compte en premier, puis value2.
  5. La définition d'en-tête Host * (où * est un modèle – un caractère générique qui correspond à zéro ou plusieurs caractères) correspondra à zéro ou plusieurs hôtes.

Toujours en considérant le format ci-dessus, voici comment ssh lit le fichier de configuration. Si vous exécutez une commande ssh pour accéder à distance à host1 comme ceci :


ssh host1

La commande ssh ci-dessus fera les choses suivantes :

  1. correspond à l'alias d'hôte host1 dans le fichier de configuration et applique les options définies sous l'en-tête de définition, Host host1.
  2. passe ensuite à la section hôte suivante, Host host2 et constate que le nom fourni sur la ligne de commande ne correspond pas, donc aucune option n'est utilisée à partir d'ici.
  3. Il passe à la dernière section, Hôte *, qui correspond à tous les hôtes. Ici, il applique toutes les options de cette section à la connexion hôte. Mais il ne peut pas remplacer les valeurs des options déjà utilisées dans la ou les sections précédentes.
  4. La même chose s'applique à host2.

Comment utiliser le fichier de configuration SSH spécifique à l'utilisateur

Une fois que vous avez compris le fonctionnement du fichier de configuration du client ssh, vous pouvez le créer comme suit. N'oubliez pas d'utiliser les options et les valeurs (alias d'hôte, numéros de port, noms d'utilisateur, etc.) applicables à votre environnement de serveur.

Ouvrez le fichier de configuration avec votre éditeur préféré :


vi ~/.ssh/config

Et définissez les sections nécessaires :


Host fedora25
        HostName 192.168.56.15
        Port 22
        ForwardX11 no

Host centos7
        HostName 192.168.56.10
        Port 22
        ForwardX11 no

Host ubuntu
        HostName 192.168.56.5
        Port 2222
        ForwardX11 yes

Host *
        User tecmint
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
        Compression yes
        ServerAliveInterval 60
        ServerAliveCountMax 20
        LogLevel INFO

Une explication détaillée des options de configuration ssh ci-dessus.

  1. HostName – définit le véritable nom d'hôte auquel vous connecter. Vous pouvez également utiliser une adresse IP numérique, cela est également autorisé (à la fois sur la ligne de commande et dans les spécifications HostName). .
  2. Utilisateur – spécifie l'utilisateur sous lequel se connecter.
  3. Port – définit le numéro de port pour se connecter sur l'hôte distant, la valeur par défaut est 22. Utilisez le numéro de port configuré dans le fichier de configuration sshd de l'hôte distant.
  4. Protocole – cette option définit les versions de protocole que ssh doit prendre en charge par ordre de préférence. Les valeurs habituelles sont '1' et '2', plusieurs versions doivent être séparées par des virgules.
  5. IdentityFile – spécifie un fichier à partir duquel l'identité d'authentification DSA, Ed25519, RSA ou ECDSA de l'utilisateur est lue.
  6. ForwardX11 – définit si les connexions X11 seront automatiquement redirigées via le canal sécurisé et l'ensemble DISPLAY. Il a deux valeurs possibles « oui » ou « non ».
  7. Compression – elle est utilisée pour définir la compression lors de la connexion à distance avec la valeur « oui ». La valeur par défaut est « non ».
  8. ServerAliveInterval – définit un intervalle de délai d'attente en secondes après lequel si aucune réponse (ou donnée) n'a été reçue du serveur, ssh enverra un message via le canal crypté pour demander une réponse du serveur. La valeur par défaut est 0, ce qui signifie qu'aucun message ne sera envoyé au serveur, ou 300 si l'option BatchMode a été définie.
  9. ServerAliveCountMax – définit le nombre de messages actifs du serveur qui peuvent être envoyés sans que ssh ne reçoive aucune réponse du serveur.
  10. LogLevel – définit le niveau de verbosité utilisé lors de la journalisation des messages depuis ssh. Les valeurs autorisées incluent : QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 et DEBUG3. Et la valeur par défaut est INFO.

La manière standard de se connecter à n'importe quel hôte Linux distant (CentOS 7 – dans mon cas), définie dans la deuxième section du fichier de configuration ci-dessus, nous taperions normalement la commande ci-dessous :


ssh -i ~/.ssh/id_rsa -p 22 [email 

Cependant, avec l'utilisation du fichier de configuration du client ssh, nous pouvons simplement taper la commande suivante :


ssh centos7 

Vous pouvez trouver plus d'options et d'exemples d'utilisation dans la page de manuel de configuration du client ssh :


$man ssh_config

C'est tout pour l'instant, dans ce guide, nous vous avons expliqué comment utiliser un fichier de configuration client ssh spécifique à l'utilisateur (personnalisé) sous Linux. Utilisez le formulaire de commentaires ci-dessous pour nous répondre concernant cet article.