ssh - recherche d'IP via API sur demande

1

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.

Wolph
la source
… Exécutent-ils l'API DNS sur une pomme de terre?
grawity
Très probablement, mais c'est hors de mon contrôle malheureusement alors j'essaie de le rendre aussi pratique que possible
Wolph

Réponses:

2

Il y a plusieurs options. En premier lieu, il est ProxyCommandpossible 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:

ssh -o ProxyCommand="ssh bastion.tld -W %h:%p" server123.tld

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:

# ~/.ssh/config – see `man ssh_config`

Host *.example.com
    ProxyCommand ~/bin/ssh-cloud-lookup %h %p

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_mymachinespour résoudre les noms des conteneurs nspawn.

Grawity
la source
Parfait, l'option ProxyCommand devrait fonctionner très bien pour mon cas. L'API est beaucoup trop lente pour les autres solutions
Wolph