ssh - ricerca dell'IP tramite API su richiesta


1

C'è un modo per fare in modo che ssh cerchi in modo dinamico l'indirizzo IP per un determinato nome host tramite un'API esterna?

Lo scenario è che ho alcuni clienti con migliaia di diversi server cloud su richiesta (ne vengono aggiunti di nuovi ogni ora, quelli vecchi vengono uccisi ogni ora).

Poiché ci sono così tanti nomi e cambiano abbastanza velocemente, l'utilizzo del servizio cloud API DNS non è in realtà un'opzione (ho provato prima, uccide i loro pannelli di amministrazione e server API).

Quindi ... Sto cercando un'opzione di configurazione in ssh per usare uno script per cercare l'indirizzo IP quando faccio "ssh some-name". So che posso alias lo script ssh e racchiuderlo, ma mi chiedo se ci siano opzioni interne disponibili.


... stanno eseguendo l'API DNS su una patata?
gravità

Molto probabilmente, ma sfortunatamente è fuori dal mio controllo, quindi sto cercando di renderlo il più conveniente possibile
Wolph,

Risposte:


2

Esistono diverse opzioni. In primo luogo c'è ProxyCommand, che può usare un programma arbitrario al posto della connessione TCP - purché parli SSH in stdin / stdout. (Ovviamente funziona solo con SSH.)

Ad esempio, per eseguire il tunneling tramite un altro server SSH:

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

Quindi potresti scrivere uno strumento / script nella tua lingua preferita che accetta il nome host nella riga di comando, cerca il server, apre una connessione TCP e copia i dati tra di esso e stdin / out. (Potrebbe essere uno shellscript che viene eseguito nc.)

Quindi usalo in questo modo:

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

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

La seconda opzione è quella di scrivere un server DNS personalizzato che utilizza l'API del contenitore per cercare indirizzi e fornire risposte. Credo di aver visto alcuni strumenti come Chubby fare esattamente questo.


La terza opzione (specifica per Linux) è quella di scrivere un plug-in "nsswitch" che implementa la ricerca del nome host, simile ai plug-in "dns", "mdns", "files" esistenti. Ad esempio, systemd fornisce un plugin chiamato nss_mymachinesper la risoluzione dei nomi dei contenitori nspawn.


Perfetto, l'opzione ProxyCommand dovrebbe funzionare benissimo per il mio caso. L'API è troppo lenta per le altre soluzioni
Wolph,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.