cómo averiguar la ip de un nombre de host ssh

10

¿Hay una manera simple de recuperar la IP de a HostNamedesde una configuración ssh en la línea de comando? Muchas veces tengo que usar scpy me gustaría conectarme a una máquina, pero solo recuerdo el HostName.

m33lky
fuente
1
scp leerá tu .ssh/configy /etc/ssh/ssh_config. ¿Hay alguna razón por la que no pueda scp por los alias definidos en la configuración?
Tim Kennedy el
Deberías agregar esto como respuesta. Creo que cuando lo probé por primera vez, no proporcioné la clave o algo así, por lo que no reconoció al host.
m33lky
Parecía un poco ligero para una respuesta, pero lo agregué. junto con lo que considero una lectura interesante relacionada con la configuración ssh.
Tim Kennedy el

Respuestas:

2

scp leerá tu ~/.ssh/configy /etc/ssh/ssh_config. siempre y cuando scp a / desde el nombre de uno de los alias de host en su configuración ssh, debería funcionar.

Dado que parece una respuesta breve, aquí hay más información sobre las cosas que puede hacer con su configuración ssh ...

Aquí hay una publicación que describe algunas de las características avanzadas del archivo de configuración ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- stinking-vpn-software /

¿Necesita tunelizar ssh / scp a través de un proxy http? no hay problema, solo use los pasos descritos aquí: http://www.mtu.net/~engstrom/ssh-proxy.php

Otro uso de la opción ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/

Tim Kennedy
fuente
1
Las respuestas cortas al punto son geniales. De lo contrario, es fácil salirse del tema. Cualquiera que esté haciendo túneles debería echar un vistazo a sshuttle .
m33lky
9

hostAsignar desde el argumento dado en la línea de comando a la hostnameentrada ssh_config es fácil de usar ssh.

Puede pedirle que evalúe e imprima lo que usaría para la configuración de una línea de comando, sin conectarse realmente. Luego, simplemente necesita extraer lo que enumera hostname( tenga en cuenta que canonicaliza los nombres de las claves de configuración al convertirlos en minúsculas). Un ejemplo simple es:

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

Si .ssh / config contiene:

Host database
Hostname database.example.com

Esto se imprimirá database.example.com.

Para hacer ping, por supuesto, puede evaluar el resultado y usarlo como argumento:

ping $(ssh -G database | awk '/^hostname / { print $2 }')
Lloyd Piqué
fuente
2
esa es la cosa. ¡gran respuesta!
heisian
3

No hay necesidad de hacerloscp , pero puede usar sshlos rastros de depuración.

ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Gilles 'SO- deja de ser malvado'
fuente
1

Por lo general, puede hacerlo host HostNamey obtendrá la dirección IP.

Si hostno está instalado (debería estarlo), puede usar el nslookup HostName 8.8.8.8que usará los servidores DNS de Google para realizar la búsqueda.

Para hacer estas cosas, o bien el resolutor de su máquina debe tener una configuración correcta (en el archivo /etc/resolv.conf y tal vez /etc/nsswitch.conf) o debe usar un "nombre de dominio completo", completo con host, domaiin y "TLD" (.org, .com, .net ese tipo de sufijo).

Bruce Ediger
fuente
3
Esto no busca alias de host en ~/.ssh/config, que entiendo que es el punto de esta pregunta.
Gilles 'SO- deja de ser malvado'
Jaja, también me di cuenta de eso. ssh's HostNamees un alias arbitrario, no un nombre de dominio.
m33lky
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
terdon
0

use un falso ProxyCommand ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
usuario102331
fuente