GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation du fichier de configuration SSH

Si vous vous connectez régulièrement à plusieurs systèmes distants via SSH, vous constaterez qu'il est difficile, voire impossible, de se souvenir de toutes les adresses IP distantes, des différents noms d'utilisateur, des ports non standard et des diverses options de ligne de commande.

Une option serait de créer un alias bash pour chaque connexion au serveur distant. Cependant, il existe une autre solution, bien meilleure et plus simple, à ce problème. OpenSSH vous permet de configurer un fichier de configuration par utilisateur dans lequel vous pouvez stocker différentes options SSH pour chaque machine distante à laquelle vous vous connectez.

Cet article couvre les bases du fichier de configuration du client SSH et explique certaines des options de configuration les plus courantes.

Prérequis #

Nous supposons que vous utilisez un système Linux ou macOS avec un client OpenSSH installé.

Emplacement du fichier de configuration SSH #

Le fichier de configuration côté client OpenSSH est nommé config , et il est stocké dans le .ssh répertoire sous le répertoire personnel de l'utilisateur.

Le ~/.ssh le répertoire est automatiquement créé lorsque l'utilisateur exécute le ssh commande pour la première fois. Si le répertoire n'existe pas sur votre système, créez-le à l'aide de la commande ci-dessous :

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Par défaut, le fichier de configuration SSH peut ne pas exister, vous devrez peut-être le créer en utilisant le touch commande :

touch ~/.ssh/config

Ce fichier doit être accessible en lecture et en écriture uniquement par l'utilisateur et non accessible par d'autres :

chmod 600 ~/.ssh/config

Structure et modèles du fichier de configuration SSH #

Le fichier de configuration SSH prend la structure suivante :

Host hostname1
    SSH_OPTION value
    SSH_OPTION value

Host hostname2
    SSH_OPTION value

Host *
    SSH_OPTION value

Le contenu du fichier de configuration du client SSH est organisé en strophes (sections). Chaque strophe commence par le Host directive et contient des options SSH spécifiques utilisées lors de l'établissement d'une connexion avec le serveur SSH distant.

L'indentation n'est pas obligatoire mais recommandée car elle facilite la lecture du fichier.

L'Host La directive peut contenir un motif ou une liste de motifs séparés par des espaces. Chaque modèle peut contenir zéro ou plusieurs caractères non blancs ou l'un des spécificateurs de modèle suivants :

  • * - Correspond à zéro ou plusieurs caractères.Par exemple, Host * correspond à tous les hôtes, tandis que 192.168.0.* correspond aux hôtes dans le 192.168.0.0/24 sous-réseau.
  • ? - Correspond exactement à un caractère. Le modèle, Host 10.10.0.? correspond à tous les hôtes dans 10.10.0.[0-9] plage.
  • ! - Lorsqu'il est utilisé au début d'un modèle, il annule la correspondance. Par exemple, Host 10.10.0.* !10.10.0.5 correspond à n'importe quel hôte dans le 10.10.0.0/24 sous-réseau sauf 10.10.0.5 .

Le client SSH lit le fichier de configuration strophe par strophe, et si plusieurs modèles correspondent, les options de la première strophe correspondante sont prioritaires. Par conséquent, davantage de déclarations spécifiques à l'hôte doivent être données au début du fichier et des remplacements plus généraux à la fin du fichier.

Vous pouvez trouver une liste complète des options ssh disponibles en tapant man ssh_config dans votre terminal ou en visitant la page de manuel ssh_config.

Le fichier de configuration SSH est également lu par d'autres programmes tels que scp , sftp , et rsync .

Exemple de fichier de configuration SSH #

Maintenant que nous avons couvert les bases du fichier de configuration SSH, regardons l'exemple suivant.

Généralement, lors de la connexion à un serveur distant via SSH, vous spécifiez le nom d'utilisateur distant, le nom d'hôte et le port. Par exemple, pour se connecter en tant qu'utilisateur nommé john à un hôte appelé dev.example.com sur le port 2322 depuis la ligne de commande, vous taperez :

ssh [email protected] -p 2322

Pour vous connecter au serveur en utilisant les mêmes options que celles fournies dans la commande ci-dessus, simplement en tapant ssh dev , placez les lignes suivantes dans votre "~/.ssh/config fichier :

~/.ssh/config
Host dev
    HostName dev.example.com
    User john
    Port 2322

Maintenant, lorsque vous tapez ssh dev , le client ssh lira le fichier de configuration et utilisera les détails de connexion spécifiés pour le dev hébergeur :

ssh dev

Exemple de fichier de configuration SSH partagé #

Cet exemple donne des informations plus détaillées sur les modèles d'hôte et la priorité des options.

Prenons l'exemple de fichier suivant :

Host targaryen
    HostName 192.168.1.10
    User daenerys
    Port 7654
    IdentityFile ~/.ssh/targaryen.key

Host tyrell
    HostName 192.168.10.20

Host martell
    HostName 192.168.10.50

Host *ell
    user oberyn

Host * !martell
    LogLevel INFO

Host *
    User root
    Compression yes
  • Lorsque vous tapez ssh targaryen , le client ssh lit le fichier et applique les options de la première correspondance, qui est Host targaryen . Ensuite, il vérifie les strophes suivantes une par une pour un modèle correspondant. Le prochain correspondant est Host * !martell (c'est-à-dire tous les hébergeurs sauf martell ), et il appliquera l'option de connexion de cette strophe. La dernière définition Host * correspond également, mais le client ssh ne prendra que la Compression car l'option User l'option est déjà définie dans le Host targaryen strophe.

    La liste complète des options utilisées lorsque vous tapez ssh targaryen est le suivant :

    HostName 192.168.1.10
    User daenerys
    Port 7654
    IdentityFile ~/.ssh/targaryen.key
    LogLevel INFO
    Compression yes
  • Lors de l'exécution de ssh tyrell les modèles d'hôte correspondants sont :Host tyrell , Host *ell , Host * !martell et Host * . Les options utilisées dans ce cas sont :

    HostName 192.168.10.20
    User oberyn
    LogLevel INFO
    Compression yes
  • Si vous exécutez ssh martell , les modèles d'hôte correspondants sont :Host martell , Host *ell et Host * . Les options utilisées dans ce cas sont :

    HostName 192.168.10.50
    User oberyn
    Compression yes
  • Pour toutes les autres connexions, le client ssh utilisera les options spécifiées dans le Host * !martell et Host * rubriques.

Remplacer l'option du fichier de configuration SSH #

Le client ssh lit sa configuration dans l'ordre de priorité suivant :

  1. Options spécifiées à partir de la ligne de commande.
  2. Options définies dans le ~/.ssh/config .
  3. Options définies dans le /etc/ssh/ssh_config .

Si vous souhaitez remplacer une seule option, vous pouvez la spécifier sur la ligne de commande. Par exemple, si vous avez la définition suivante :

Host dev
    HostName dev.example.com
    User john
    Port 2322

et vous souhaitez utiliser toutes les autres options sauf vous connecter en tant qu'utilisateur root au lieu de john spécifiez simplement l'utilisateur sur la ligne de commande :

ssh -o "User=root" dev

Le -F (configfile ) vous permet de spécifier un autre fichier de configuration par utilisateur.

Pour dire au ssh client pour ignorer toutes les options spécifiées dans le fichier de configuration ssh, utilisez :

ssh -F /dev/null [email protected]

Conclusion #

Nous vous avons montré comment configurer votre fichier de configuration ssh utilisateur. Vous pouvez également configurer une authentification basée sur une clé SSH et vous connecter à vos serveurs Linux sans saisir de mot de passe.

Par défaut, SSH écoute sur le port 22. La modification du port SSH par défaut ajoute une couche de sécurité supplémentaire à votre serveur en réduisant le risque d'attaques automatisées.

Si vous avez des questions, veuillez laisser un commentaire ci-dessous.


Linux
  1. Comment télécharger un fichier depuis un serveur en utilisant SSH ?

  2. Supprimer un fichier sous Linux en utilisant le numéro d'inode

  3. Emplacement non par défaut pour le fichier de configuration ssh sous Linux

  4. Comment changer l'encodage utilisé par mon serveur SFTP ?

  5. SSH - Comment inclure la commande -t dans le fichier ~/.ssh/config

Comment configurer l'authentification basée sur la clé Ssh pour Github en utilisant le fichier ~/.ssh/config ?

Comment télécharger un fichier à l'aide du gestionnaire de fichiers cPanel ?

Comment connecter un hôte distant à l'aide de la commande ssh

Quel est le moyen le plus simple de SSH en utilisant Python ?

Comment changer la config de u-boot dans Yocto

Comment faire en sorte que ssh se connecte avec le bon utilisateur ?