Ma compréhension du fonctionnement de ~ / .ssh / config est que chaque ligne 'Host' prend effet pour tout hôte correspondant après ce point dans le fichier de configuration.
J'ai un certain nombre de serveurs personnels et de serveurs de travail auxquels je dois me connecter. J'essaie de faire quelque chose comme ceci:
# Réglages généraux ControlMaster auto ControlPath ~/.ssh/controlmaster/%r@%h:% p ForwardAgent oui ForwardX11 oui GSSAPIAuthentication no PubkeyAuthentication oui # Serveurs personnels Hôte * User harleypig IdentityFile ~ / .ssh / personal_id_rsa Hôte host1 Nom d'hôte host1.com Hôte host2 Nom d'hôte host2.com # Serveurs de travail Hôte * Utilisateur alan.young IdentityFile ~ / .ssh / work_id_rsa Travail hôte1 Nom d'hôte work1.companyserver.com Travail hôte2 Nom d'hôte work2.companyserver.com Hôte * Utilisateur devuser Hôte dev1 Nom d'hôte dev1.companyserver.com Hôte dev2 Nom d'hôte dev2.companyserver.com
Les documents semblent indiquer que host1 et host2 devraient utiliser 'personal_id_rsa' et l'utilisateur harleypig. work1, work2, dev1 et dev2 doivent utiliser 'work_id_rsa' et les deux premiers doivent être l'utilisateur 'alan.young' et dev1 et dev2 doivent être l'utilisateur 'devuser'
Cependant, cela ne se produit pas. Quel que soit l'hôte * que je mets en premier, c'est avec quoi tous les hôtes suivants essaient de se connecter. Suis-je incompréhensible ou manque quelque chose?
Réponses:
Du
ssh_config
manuel :Ainsi, dans votre exemple, tous les hôtes utiliseront
User harleypig
etIdentityFile ~/.ssh/personal_id_rsa
.Considérez les
Host
directives avec des caractères génériques comme des solutions de rechange: utilisez les paramètres suivants uniquement s'ils n'ont pas encore été définis. Vous devez écrire quelque chose comme ceci:Vous pouvez mettre plusieurs modèles sur une
Host
ligne si un ensemble donné d'alias d'hôte ne peut pas être mis en correspondance avec des caractères génériques, par exempleHost host* more* outlier
.la source
Vous vous trompez définitivement.
Host *
comme dernière entrée.Host *
entréesSi vos machines de travail ont un format de nom que vous pouvez généraliser pour cibler uniquement les machines de travail, par exemple: machine1.work.com, host.work.com, fileserver.work.com, vous pouvez cibler vos machines de travail comme:
Il en va de même pour vos machines personnelles.
la source
Host *
au début du fichier semble bien fonctionner. Peut-être le fait que vous utilisez un caractère générique l'emporte-t-il sur le fait qu'il s'agit de la première entrée lorsque vous les hiérarchisez?Host *.work.com
est une syntaxe non valide. Cela ne fonctionne que dans l'autre sens:Host myserver*
Host *subdomain.com
cela ne répondra pas.