Czy istnieje prosty sposób na uzyskanie adresu IP HostName
z konfiguracji ssh w wierszu poleceń? Wiele razy muszę korzystać scp
i chciałbym połączyć się z maszyną, ale pamiętam tylko nazwę hosta.
Czy istnieje prosty sposób na uzyskanie adresu IP HostName
z konfiguracji ssh w wierszu poleceń? Wiele razy muszę korzystać scp
i chciałbym połączyć się z maszyną, ale pamiętam tylko nazwę hosta.
Odpowiedzi:
scp przeczyta twoje ~/.ssh/config
i /etc/ssh/ssh_config
. tak długo, jak scp do / z nazwy jednego z aliasów hosta w konfiguracji ssh, powinno działać.
ponieważ wydaje się to być krótka odpowiedź, oto kilka informacji o rzeczach, które możesz zrobić z konfiguracją ssh ...
Oto post, który opisuje niektóre zaawansowane funkcje pliku konfiguracyjnego ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- śmierdzące-oprogramowanie VPN /
Potrzebujesz tunelować ssh / scp przez proxy HTTP? nie ma problemu, po prostu wykonaj kroki opisane tutaj: http://www.mtu.net/~engstrom/ssh-proxy.php
Kolejne użycie opcji ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/
Odwzorowanie z host
argumentu podanego w wierszu poleceń na hostname
wpis ssh_config jest łatwe przy użyciu ssh
samego siebie.
Możesz poprosić go o ocenę i wydrukowanie, czego użyłby do konfiguracji linii poleceń, bez faktycznego łączenia. Następnie wystarczy wyciągnąć to, co zawiera hostname
(zauważ, że kanonizuje nazwy kluczy konfiguracyjnych, konwertując je na małe litery). Prostym przykładem jest:
ssh -G database | awk '/^hostname / { print $2 }'
Jeśli .ssh / config zawiera:
Host database
Hostname database.example.com
To zostanie wydrukowane database.example.com
.
Aby pingować, możesz oczywiście ocenić wynik i użyć go jako argumentu:
ping $(ssh -G database | awk '/^hostname / { print $2 }')
Nie trzeba tego robićscp
, ale można użyć ssh
śladów debugowania.
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Zwykle możesz to zrobić, host HostName
a otrzymasz adres IP.
Jeśli host
nie jest zainstalowany (powinien być), możesz użyć, nslookup HostName 8.8.8.8
który użyje serwerów Google DNS do wyszukiwania.
Aby to zrobić, albo program rozpoznawania nazw komputera musi mieć poprawną konfigurację (w pliku /etc/resolv.conf i być może /etc/nsswitch.conf), albo musisz użyć „w pełni kwalifikowanej nazwy domeny” wraz z hostem, domaiin i „TLD” (.org, .com, .net tego rodzaju sufiks).
~/.ssh/config
, co rozumiem jako sedno tego pytania.
HostName
to dowolny alias, a nie nazwa domeny.
użyj fałszywego 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
i/etc/ssh/ssh_config
. czy istnieje powód, dla którego nie możesz scpować przez aliasy zdefiniowane w konfiguracji?