Existe-t-il un moyen simple de récupérer l'IP d'un HostName
dans une configuration ssh sur la ligne de commande? Plusieurs fois, je dois utiliser scp
et je souhaite me connecter à une machine, mais je ne me souviens que du HostName.
Existe-t-il un moyen simple de récupérer l'IP d'un HostName
dans une configuration ssh sur la ligne de commande? Plusieurs fois, je dois utiliser scp
et je souhaite me connecter à une machine, mais je ne me souviens que du HostName.
Réponses:
scp lira votre ~/.ssh/config
et /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/
host
Mapper de l' argument donné sur la ligne de commande à l' hostname
entré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 }')
Il n'est pas nécessaire de le faire pourscp
, mais vous pouvez utiliser ssh
les traces de débogage de.
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Habituellement, vous pouvez le faire host HostName
et vous obtiendrez l'adresse IP.
S'il host
n'est pas installé (il devrait l'être), vous pouvez utiliser celui nslookup HostName 8.8.8.8
qui 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).
~/.ssh/config
, ce que je comprends être le point de cette question.
HostName
est un alias arbitraire, pas un nom de domaine.
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
.ssh/config
et/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?