Чи є простий спосіб отримати IP-адресу HostName
з конфігурації ssh в командному рядку? Багато разів мені доводиться користуватися scp
і хотілося б підключитися до машини, але я пам’ятаю лише HostName.
Чи є простий спосіб отримати IP-адресу HostName
з конфігурації ssh в командному рядку? Багато разів мені доводиться користуватися scp
і хотілося б підключитися до машини, але я пам’ятаю лише HostName.
Відповіді:
scp прочитає ваші ~/.ssh/config
та /etc/ssh/ssh_config
. доки ви переходите до / від імені одного з псевдонімів хосту у своєму ssh-конфігурації, воно повинно працювати.
оскільки це виглядає як короткий варіант відповіді, ось додаткова інформація з речами, які ви можете зробити зі своїм конфігурацією ssh ...
Ось публікація, яка описує деякі розширені функції файлу ssh config: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- sminking-vpn-software /
Потрібно тунелювати 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
. Чи є причина, яку ви не можете сканувати псевдонімами, визначеними в конфігурації?