Як дізнатися ip ssh HostName


10

Чи є простий спосіб отримати IP-адресу HostNameз конфігурації ssh в командному рядку? Багато разів мені доводиться користуватися scpі хотілося б підключитися до машини, але я пам’ятаю лише HostName.


1
scp прочитає ваші .ssh/configта /etc/ssh/ssh_config. Чи є причина, яку ви не можете сканувати псевдонімами, визначеними в конфігурації?
Тім Кеннеді

Ви повинні додати це як відповідь. Я думаю, що коли я спробував це спочатку, я не надав ключ чи щось таке, тому він не впізнав хоста.
m33lky

здавалося, трохи світла для відповіді, але я додав її. поряд із тим, що я вважаю цікавим читанням, пов’язаним із ssh config.
Тім Кеннеді

Відповіді:


2

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/


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, які я розумію, що суть цього питання.
Жил 'SO- перестань бути злим'

Ха-ха, я теж це помітив. ssh's 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.