Есть ли простой способ получить 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
. есть ли причина, по которой вы не можете использовать псевдонимы, определенные в конфигурации?