OpenSSH - mappe les alias dans ~ / .ssh / config aux adresses IP en ligne de commande

9

Est-il possible d'interroger ~ / .ssh / config dans la ligne de commande? Supposons que je souhaite récupérer l'adresse IP vers laquelle pointe l'alias particulier dans un programme distinct, est-ce possible?

user1042840
la source

Réponses:

2

Si je comprends que vous voulez juste l'adresse IP renvoyée, par exemple., 192.168.1.1, alors c'est une façon (très fragile) d'interroger le fichier à partir de la ligne de commande, vous disposez des autorisations appropriées pour le lire et votre .ssh/configest toujours formaté:

awk '/Host $youralias/ {getline; print $2}' .ssh/config


Je ne poste que cela car je voudrais comprendre comment l'utiliser awkpour le faire, mais mes connaissances sont, bien sûr, assez limitées.

jasonwryan
la source
1

Pas totalement sûr de ce que vous demandez ...

Supposons que vous ayez un alias SSH pour 'mainserver' afin que vous puissiez le faire ssh mainserver. Si vous voulez qu'il fonctionne également pour ping mainserver, vous devez mettre un alias /etc/hosts, comme ceci:

/ etc / hosts:

192.168.0.1 comp-one
192.168.0.2 comp-two

192.168.0.20 mainserver

Ensuite, vous pouvez le faire ping mainserveret il cinglerait 192.168.0.20.

BenjiWiebe
la source
0

Il s'agit d'un moyen légèrement plus robuste de récupérer le fichier HostNamebasé sur Hostdans le .ssh/configfichier.

sshalias()
{
    awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Andrzej Pronobis
la source
-1

Le fichier que vous mentionnez est un fichier texte, il contient des noms d'hôtes et éventuellement des adresses IP pour identifier les machines auxquelles vous vous connectez. Les noms d'hôte peuvent être résolus en adresses IP à l'aide de la host(1)commande. Le format est assez simple, il n'est donc pas trop difficile de savoir ce qu'il y a dedans. Notez que les caractères génériques peuvent être utilisés dans le fichier (les états de la mienne *.fedoraproject.org).

vonbrand
la source