Есть ли простой способ получить IP-адрес HostNameиз конфигурации SSH в командной строке? Много раз мне приходилось пользоваться scpи хотелось бы подключиться к машине, но я помню только HostName.
Есть ли простой способ получить IP-адрес HostNameиз конфигурации SSH в командной строке? Много раз мне приходилось пользоваться scpи хотелось бы подключиться к машине, но я помню только HostName.
Ответы:
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/
Чтобы сопоставить 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 }')
Там нет необходимости делать этоscp , но вы можете использовать sshтрассировки отладки.
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Как правило, вы можете сделать, host HostNameи вы получите IP-адрес.
Если hostне установлен (это должно быть), вы можете использовать nslookup HostName 8.8.8.8который будет использовать DNS-серверы Google для поиска.
Для этого необходимо, чтобы резолвер вашего компьютера имел правильную конфигурацию (в файле /etc/resolv.conf и, возможно, /etc/nsswitch.conf), или вы должны использовать «полное доменное имя», в комплекте с хостом, domaiin и "TLD" (суффикс .org, .com, .net такого рода).
~/.ssh/config, что, как я понимаю, является смыслом этого вопроса.
HostName- это произвольный псевдоним, а не имя домена.
использовать фиктивную 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и/etc/ssh/ssh_config. есть ли причина, по которой вы не можете использовать псевдонимы, определенные в конфигурации?