как узнать ip ssh HostName

10

Есть ли простой способ получить IP-адрес HostNameиз конфигурации SSH в командной строке? Много раз мне приходилось пользоваться scpи хотелось бы подключиться к машине, но я помню только HostName.

m33lky
источник
1
scp прочтет ваши .ssh/configи /etc/ssh/ssh_config. есть ли причина, по которой вы не можете использовать псевдонимы, определенные в конфигурации?
Тим Кеннеди
Вы должны добавить это в качестве ответа. Я думаю, что когда я попробовал это сначала, я не предоставил ключ или что-то еще, поэтому он не узнал хост.
m33lky
казалось немного света для ответа, но я добавил его. наряду с тем, что я считаю интересным чтением, связанным с ssh config.
Тим Кеннеди

Ответы:

2

scp прочтет ваши ~/.ssh/configи /etc/ssh/ssh_config. до тех пор, пока вы используете scp в / из имени одного из псевдонимов хоста в вашей конфигурации ssh, он должен работать.

так как это кажется коротким ответом, вот еще немного информации о том, что вы можете сделать с помощью вашей конфигурации ssh ...

Вот пост, который описывает некоторые из расширенных возможностей конфигурационного файла ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- вонючий-VPN программное обеспечение /

Нужно туннелировать ssh / scp через http прокси? нет проблем, просто используйте шаги, изложенные здесь: http://www.mtu.net/~engstrom/ssh-proxy.php

Другое использование опции ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/

Тим Кеннеди
источник
1
Краткие ответы на вопросы - это здорово. Иначе легко уйти от темы. Любой, кто занимается туннелированием, должен взглянуть на sshuttle .
m33lky
9

Чтобы сопоставить hostаргумент, указанный в командной строке, с записью ssh_config, hostnameлегко использовать sshсебя.

Вы можете попросить его оценить и распечатать то, что он будет использовать для конфигурации командной строки, без фактического подключения. Затем вам просто нужно извлечь то, для чего он перечисляет hostname(обратите внимание, что он канонизирует имена ключей конфигурации путем преобразования их в нижний регистр). Простой пример:

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

Если .ssh / config содержит:

Host database
Hostname database.example.com

Это распечатает database.example.com.

Чтобы проверить его, вы можете, конечно, оценить вывод и использовать его в качестве аргумента:

ping $(ssh -G database | awk '/^hostname / { print $2 }')
Ллойд Пике
источник
2
это вещи. отличный ответ!
Heisian
1

Как правило, вы можете сделать, host HostNameи вы получите IP-адрес.

Если hostне установлен (это должно быть), вы можете использовать nslookup HostName 8.8.8.8который будет использовать DNS-серверы Google для поиска.

Для этого необходимо, чтобы резолвер вашего компьютера имел правильную конфигурацию (в файле /etc/resolv.conf и, возможно, /etc/nsswitch.conf), или вы должны использовать «полное доменное имя», в комплекте с хостом, domaiin и "TLD" (суффикс .org, .com, .net такого рода).

Брюс Эдигер
источник
3
Это не ищет псевдонимы хоста ~/.ssh/config, что, как я понимаю, является смыслом этого вопроса.
Жиль "ТАК ... перестать быть злым"
Ха-ха, я тоже это заметил. ssh HostName- это произвольный псевдоним, а не имя домена.
m33lky
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Тердон
0

использовать фиктивную ProxyCommand ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
user102331
источник