come scoprire l'ip di un nome host ssh


10

C'è un modo semplice per recuperare l'IP di un HostNameda una configurazione SSH sulla riga di comando? Molte volte devo usare scpe vorrei connettermi a una macchina, ma ricordo solo il nome host.


1
scp leggerà il tuo .ssh/confige /etc/ssh/ssh_config. c'è un motivo per cui non puoi scappare dagli alias definiti nella configurazione?
Tim Kennedy,

Dovresti aggiungere questo come risposta. Penso che quando l'ho provato per primo, non ho fornito la chiave o qualcosa del genere, quindi non ha riconosciuto l'host.
m33lky,

sembrava una piccola luce per una risposta, ma l'ho aggiunto. insieme a quella che considero una lettura interessante relativa alla configurazione SSH.
Tim Kennedy,

Risposte:


2

scp leggerà il tuo ~/.ssh/confige /etc/ssh/ssh_config. fintanto che scp a / dal nome di uno degli alias host nella tua configurazione ssh, dovrebbe funzionare.

dato che sembra un po 'breve per essere una risposta, ecco qualche informazione in più sulle cose che puoi fare con la tua configurazione ssh ...

Ecco un post che descrive alcune delle funzionalità avanzate del file di configurazione ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- puzzolente-vpn-software /

Devi eseguire il tunneling di ssh / scp attraverso un proxy http? nessun problema, basta usare i passaggi descritti qui: http://www.mtu.net/~engstrom/ssh-proxy.php

Un altro uso dell'opzione ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/


1
Le risposte brevi al punto sono ottime. Altrimenti è facile andare fuori tema. Chiunque faccia tunnel dovrebbe dare un'occhiata a sshuttle .
m33lky,

9

Mappare hostdall'argomento fornito dalla riga di comando alla hostnamevoce ssh_config è facile usare sshse stesso.

Puoi chiedergli di valutare e stampare ciò che userebbe per la configurazione per una riga di comando, senza effettivamente collegarsi. Quindi devi semplicemente estrarre ciò che elenca hostname(Nota che canonicalizza i nomi delle chiavi di configurazione convertendoli in lettere minuscole). Un semplice esempio è:

ssh -G database | awk '/^hostname / { print $2 }'

Se .ssh / config contiene:

Host database
Hostname database.example.com

Questo verrà stampato database.example.com.

Per eseguire il ping, è possibile ovviamente valutare l'output e utilizzarlo come argomento:

ping $(ssh -G database | awk '/^hostname / { print $2 }')

2
questa è la roba. Bella risposta!
Heisian,


1

Di solito, puoi farlo host HostNamee otterrai l'indirizzo IP.

Se hostnon è installato (dovrebbe essere), è possibile utilizzare nslookup HostName 8.8.8.8quale utilizzerà i server DNS di Google per effettuare la ricerca.

Per fare queste cose, o il resolver della tua macchina deve avere una configurazione corretta (nel file /etc/resolv.conf e forse /etc/nsswitch.conf) oppure devi usare un "nome di dominio completo", completo di host, domaiin e "TLD" (.org, .com, .net quel tipo di suffisso).


3
Questo non cerca gli alias host ~/.ssh/config, che capisco essere il punto di questa domanda.
Gilles 'SO- smetti di essere malvagio' il

Haha, ho notato anche quello. ssh HostNameè un alias arbitrario, non un nome di dominio.
m33lky,

I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
terdon

0

utilizzare un ProxyCommand fasullo ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
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.