comment trouver l'ip d'un ssh HostName

10

Existe-t-il un moyen simple de récupérer l'IP d'un HostNamedans une configuration ssh sur la ligne de commande? Plusieurs fois, je dois utiliser scpet je souhaite me connecter à une machine, mais je ne me souviens que du HostName.

m33lky
la source
1
scp lira votre .ssh/configet /etc/ssh/ssh_config. y a-t-il une raison pour laquelle vous ne pouvez pas scp par les alias définis dans la configuration?
Tim Kennedy
Vous devez ajouter ceci comme réponse. Je pense que lorsque je l'ai essayé en premier, je n'ai pas fourni la clé ou quelque chose, donc il n'a pas reconnu l'hôte.
m33lky
semblait un peu léger pour une réponse, mais je l'ai ajouté. avec ce que je considère comme une lecture intéressante liée à la config ssh.
Tim Kennedy

Réponses:

2

scp lira votre ~/.ssh/configet /etc/ssh/ssh_config. tant que vous scp vers / depuis le nom de l'un des alias d'hôte dans votre configuration ssh, cela devrait fonctionner.

puisque cela semble un peu court pour être une réponse, voici quelques informations supplémentaires sur les choses que vous pouvez faire avec votre configuration ssh ...

Voici un article qui décrit certaines des fonctionnalités avancées du fichier de configuration ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- logiciel-vpn-puant /

Besoin de tunneler ssh / scp via un proxy http? aucun problème, utilisez simplement les étapes décrites ici: http://www.mtu.net/~engstrom/ssh-proxy.php

Une autre utilisation de l'option ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/

Tim Kennedy
la source
1
Les réponses courtes et précises sont excellentes. Sinon, il est facile de sortir du sujet. Quiconque fait du tunneling devrait jeter un œil à sshuttle .
m33lky
9

hostMapper de l' argument donné sur la ligne de commande à l' hostnameentrée ssh_config est facile à utiliser ssh.

Vous pouvez lui demander d'évaluer et d'imprimer ce qu'il utiliserait pour la configuration d'une ligne de commande, sans réellement se connecter. Ensuite, il vous suffit de retirer ce qu'il répertorie hostname(notez qu'il canonise les noms des clés de configuration en les convertissant en minuscules). Un exemple simple est:

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

Si .ssh / config contient:

Host database
Hostname database.example.com

Cela s'imprimera database.example.com.

Pour le ping, vous pouvez bien sûr évaluer la sortie et l'utiliser comme argument:

ping $(ssh -G database | awk '/^hostname / { print $2 }')
Lloyd Pique
la source
2
c'est le truc. très bonne réponse!
heisian
1

Habituellement, vous pouvez le faire host HostNameet vous obtiendrez l'adresse IP.

S'il hostn'est pas installé (il devrait l'être), vous pouvez utiliser celui nslookup HostName 8.8.8.8qui utilisera les serveurs DNS de Google pour effectuer la recherche.

Pour faire ces choses, soit le résolveur de votre machine doit avoir une configuration correcte (dans le fichier /etc/resolv.conf et peut-être /etc/nsswitch.conf) ou vous devez utiliser un "nom de domaine complet", complet avec l'hôte, domaiin et "TLD" (.org, .com, .net ce genre de suffixe).

Bruce Ediger
la source
3
Cela ne recherche pas les alias d'hôte dans ~/.ssh/config, ce que je comprends être le point de cette question.
Gilles 'SO- arrête d'être méchant'
Haha, je viens de remarquer ça aussi. ssh HostNameest un alias arbitraire, pas un nom de domaine.
m33lky
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
terdon
0

utiliser une fausse ProxyCommand ...

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