Чи є простий спосіб отримати 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. Чи є причина, яку ви не можете сканувати псевдонімами, визначеними в конфігурації?