OpenSSH - сопоставить псевдонимы в ~ / .ssh / config с IP-адресами в командной строке

9

Можно ли запросить ~ / .ssh / config в командной строке? Допустим, я хотел бы узнать, на какой IP-адрес указывает конкретный псевдоним в отдельной программе, возможно ли это?

user1042840
источник

Ответы:

2

Если я понимаю, что вы просто хотите вернуть IP-адрес, т. Е. 192.168.1.1, то это один (невероятно хрупкий) способ запроса файла из командной строки, при условии, что у вас есть соответствующие разрешения для его чтения, и вы .ssh/configвсегда отформатирован:

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


Я публикую это только потому, что хочу понять, как awkэто сделать, но мои знания, очевидно, весьма ограничены.

jasonwryan
источник
1

Не совсем уверен, что вы спрашиваете ...

Скажем, у вас есть псевдоним SSH для 'mainserver', чтобы вы могли это сделать ssh mainserver. Если вы хотите, чтобы он также работал ping mainserver, вам нужно ввести псевдоним /etc/hosts, например, так:

/ и т.д. / хосты:

192.168.0.1 comp-one
192.168.0.2 comp-two

192.168.0.20 mainserver

Тогда вы могли бы сделать, ping mainserverи это будет пинг 192.168.0.20.

BenjiWiebe
источник
0

Это немного более надежный способ извлечения на HostNameоснове Hostв .ssh/configфайле.

sshalias()
{
    awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Анджей Пронобис
источник
-1

Упомянутый вами файл представляет собой текстовый файл, он содержит имена хостов и, возможно, IP-адреса для идентификации компьютеров, к которым вы подключаетесь. Имена хостов могут быть преобразованы в IP-адреса с помощью host(1)команды. Формат довольно прост, поэтому найти его там не сложно. Обратите внимание, что в файле могут использоваться подстановочные знаки (мои состояния *.fedoraproject.org).

vonbrand
источник