Existe-t-il un moyen de permettre à ssh de rechercher dynamiquement l'adresse ip d'un nom d'hôte donné via une API externe?
Le scénario est que j'ai quelques clients avec des milliers de serveurs cloud à la demande différents (de nouveaux serveurs sont ajoutés toutes les heures, les anciens sont supprimés toutes les heures).
Parce qu'il y a tellement de noms et qu'ils changent assez rapidement, utiliser l'API DNS du service cloud n'est pas vraiment une option (j'ai déjà essayé de tuer leurs panneaux d'administration et leurs serveurs API).
Donc ... Je cherche une option de configuration dans ssh pour utiliser un script afin de rechercher l'adresse IP lorsque je fais "ssh nom-un". Je sais que je peux aliaser le script ssh et l’envelopper, mais je me demande s’il existe une option interne disponible.
Réponses:
Il y a plusieurs options. En premier lieu, il est
ProxyCommand
possible d'utiliser un programme arbitraire à la place de la connexion TCP - du moment qu'il parle SSH en stdin / stdout. (Bien sûr, cela ne fonctionne qu'avec SSH.)Par exemple, pour un tunnel via un autre serveur SSH:
Ainsi, vous pourriez écrire un outil / script dans votre langue préférée, qui accepte le nom d’hôte en ligne de commande, recherche le serveur, ouvre une connexion TCP et copie les données entre celui-ci et stdin / out. (Cela pourrait être un shellscript qui fonctionne
nc
.)Ensuite, utilisez-le comme ceci:
La deuxième option consiste à écrire un serveur DNS personnalisé qui utilise votre API de conteneur pour rechercher des adresses et fournir des réponses. Je pense avoir vu des outils comme Chubby faire exactement cela.
La troisième option (spécifique à Linux) consiste à écrire un plug-in "nsswitch" qui implémente la recherche de nom d'hôte, similaire aux plug-ins "dns", "mdns", "fichiers" existants. Par exemple, systemd fournit un plugin nommé
nss_mymachines
pour résoudre les noms des conteneurs nspawn.la source