Votre Fichier de configuration SSH vous permet de définir des paramètres spécifiques pour chaque hôte SSH, ce qui facilite la connexion à cet hôte. En définissant un grand nombre de ces propriétés communes ou inhabituelles dans le fichier, il élimine la nécessité de mémoriser cet ensemble de paramètres à chaque fois qu'une connexion est nécessaire.
Définition d'une connexion SSH
Si le fichier, ~ / .ssh / config
n'existe pas, vous pouvez continuer et créer ceci maintenant. En règle générale, ce fichier existe dans un fichier .ssh
Répertoire "masqué", masqué uniquement parce que la plupart des systèmes d'exploitation ne montrent pas les répertoires précédés d'un .
. De plus, ce répertoire est généralement situé dans son répertoire personnel ou dans le répertoire personnel de l'utilisateur exécutant ssh, d'où ~
notation, signifiant le répertoire personnel.
Il est important de garder un œil sur les autorisations dans le .ssh
dossier. La plupart des clients SSH veulent que les fichiers soient en mode 600
dans ce dossier. Si vous faites référence à ce dossier à partir du sous-système Windows pour Linux, vous devez vous assurer de chmod 600 ~ \. ssh \ *
Alors, à quoi ressemble une simple connexion SSH dans ce fichier? Un exemple d'une configuration simple est ci-dessous.
Hôte my-ssh-host
HostName 10.0.0.5
Port 22
Utilisateur myuser
Comme vous pouvez le constater à partir de la configuration ci-dessus, c'est à peu près aussi basique que possible. En fait, vous pouvez omettre le port car il n'est pas strictement nécessaire car 22
est le port SSH par défaut. En définissant cette connexion, sur la ligne de commande, nous pouvons simplement faire ce qui suit.
ssh my-ssh-host
La connexion demandera généralement un mot de passe, car une connexion SSH ne doit pas être non protégée.
Clés publiques / privées
Presque tous les didacticiels ou guides de configuration SSH disponibles font généralement référence à des clés publiques / privées à un moment ou à un autre. Il s'agit du moyen préféré pour configurer une connexion SSH. Au lieu d'un mot de passe pouvant être piraté ou deviné, il est nécessaire d'obtenir réellement le fichier de clé. Ce didacticiel ne décrit pas comment les créer. Supposons donc qu'un ensemble existe déjà et soit correctement configuré. Comment pouvons-nous dire à notre configuration hôte d'utiliser ce fichier?
Hôte my-ssh-host
HostName 10.0.0.5
Port 22
Utilisateur myuser
IdentityFile ~ / .ssh / id_ed25519_myuser
IdentitésSeulement oui
Il y a deux nouvelles commandes que nous avons introduites ici. le IdentityFile
et le Identités
commandes. Tout d'abord, nous devons dire à SSH où se trouve le fichier de clés, dans ce cas, nous avons stocké le fichier dans le fichier .ssh
répertoire (méfiez-vous des autorisations). Deuxièmement, nous avons défini une balise nommée Identités
. Cela indiquera à SSH de ne pas essayer tous les fichiers d'identité de ce dossier, mais uniquement celui défini. Par défaut, SSH parcourra et essaiera chaque fichier d'identité jusqu'à ce qu'il trouve le bon. Cela conduit souvent à un «Trop d'échecs d'authentification pour l'utilisateur myuser»Sur le serveur cible s'il y a beaucoup d'identités.
Configurations complexes
Il existe de nombreux scénarios que nous pourrions couvrir dans cet article, mais examinons quelques-uns courants et utiles.
ForwardAgent
Que se passe-t-il si vous avez un scénario dans lequel vous avez ouvert une connexion SSH à un serveur cible, qui doit ensuite établir une autre connexion SSH à un deuxième serveur à partir de ce serveur cible d'origine? Vous pourriez penser que vous devrez stocker ces mêmes clés SSH sur ce serveur cible pour effectuer ce prochain saut. Il y a une commande, bien nommée ForwardAgent
, qui vous permet de «transférer» vos clés locales au serveur suivant dans le tronçon.
Hôte my-ssh-host
HostName 10.0.0.5
Port 22
Utilisateur myuser
IdentityFile ~ / .ssh / id_ed25519_myuser
IdentitésSeulement oui
ForwardAgent oui
ProxyJump
Semblable à ForwardAgent
, il est souvent nécessaire d'ouvrir une connexion SSH secondaire directement via une première (ou seconde) cible. Plusieurs fois, cela est dû au fait qu'une machine peut être protégée par un pare-feu d'Internet en général, mais avoir une connexion à une «boîte de connexion», qui permet ensuite d'ouvrir une connexion sur le serveur protégé par un pare-feu. À partir de SSH version 7.3 et supérieure, le ProxyJump
commande nous permet d'accomplir facilement cela.
Hôte my-ssh-host
HostName 10.0.0.5
Port 22
Utilisateur myuser
IdentityFile ~ / .ssh / id_ed25519_myuser
IdentitésSeulement oui
ForwardAgent oui
ProxyJump myuser@10.0.0.6: 22, myuser2 @ 10.0.0.7: 10005
Comme vu ci-dessus, il y a deux serveurs ici. Initialement, la connexion SSH ira à 10.0.0.5
mais ensuite ouvrir immédiatement une connexion à 10.0.0.6
, il ouvrira enfin une connexion en utilisant un autre utilisateur et un autre port pour 10.0.0.7
.
Tunnel proxy SSH
Et si vous avez besoin de configurer un tunnel SOCKSv5? Cela est assez facile en utilisant le fichier de configuration. Nous introduisons ici trois nouvelles commandes, DynamicForward
, ControlMaster
, et ControlPath
.
Hôte my-ssh-host
HostName 10.0.0.5
Port 22
Utilisateur myuser
IdentityFile ~ / .ssh / id_ed25519_myuser
IdentitésSeulement oui
DynamicForward 8080
ControlMaster auto
ControlPath ~/.ssh/%r@%h:% p
le DynamicForward
La commande est le port que nous cherchons réellement à proxy via notre connexion SSH, tel que le port 8080
. ControlMaster
est réglé sur auto
, ce qui signifie que si une connexion existe, utilisez-la, mais sinon, créez-en une nouvelle. Finalement, le ControlPath
définit l'emplacement du fichier socket réel. Dans ce cas, il utilise le format de dénomination de % r @% h:% p
, ce qui correspond à myuser@10.0.0.5: 22
dans ce cas de connexions.
Conclusion
Il y a beaucoup de puissance dans le fichier de configuration SSH. Des exemples beaucoup plus complexes peuvent être définis, en plus de la facilité de définir de nombreux hôtes différents dans un même emplacement. Ce faisant, non seulement les connexions à l'hôte sont bien documentées, mais elles permettent un accès rapide et facile sur la ligne de commande. Si vous choisissez de placer ce fichier sous contrôle de version, vous ajoutez la possibilité d'avoir un historique de fonctionnement de vos hôtes et de vous épargner un gros mal de tête à l'avenir. Comme vous pouvez le constater, le fichier de configuration SSH facilite la définition des hôtes SSH!