Gibt es eine einfache Möglichkeit, die IP von a HostName
aus einer SSH-Konfiguration in der Befehlszeile abzurufen ? scp
Oft muss ich einen Computer verwenden und möchte eine Verbindung herstellen, aber ich erinnere mich nur an den Hostnamen.
Gibt es eine einfache Möglichkeit, die IP von a HostName
aus einer SSH-Konfiguration in der Befehlszeile abzurufen ? scp
Oft muss ich einen Computer verwenden und möchte eine Verbindung herstellen, aber ich erinnere mich nur an den Hostnamen.
Antworten:
scp liest dein ~/.ssh/config
und /etc/ssh/ssh_config
. Solange Sie zum Namen eines der Host-Aliase in Ihrer SSH-Konfiguration wechseln, sollte dies funktionieren.
Da dies eine kurze Antwort zu sein scheint, finden Sie hier einige weitere Informationen zu Dingen, die Sie mit Ihrer SSH-Konfiguration tun können ...
Hier ist ein Beitrag, der einige der erweiterten Funktionen der ssh-Konfigurationsdatei beschreibt: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- stinkende-vpn-software /
Müssen Sie ssh / scp über einen http-Proxy tunneln? Kein Problem, führen Sie einfach die hier beschriebenen Schritte aus: http://www.mtu.net/~engstrom/ssh-proxy.php
Eine andere Verwendung der ProxyCommand-Option: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/
host
Das Zuordnen von dem in der Befehlszeile angegebenen Argument zum hostname
Eintrag ssh_config ist einfach ssh
.
Sie können ihn bitten, auszuwerten und auszudrucken, was für die Konfiguration einer Befehlszeile verwendet werden soll, ohne tatsächlich eine Verbindung herzustellen. Dann müssen Sie nur noch herausziehen, wofür es aufgelistet ist hostname
(Beachten Sie, dass Konfigurationsschlüsselnamen kanonisiert werden, indem sie in Kleinbuchstaben konvertiert werden). Ein einfaches Beispiel ist:
ssh -G database | awk '/^hostname / { print $2 }'
Wenn .ssh / config enthält:
Host database
Hostname database.example.com
Dies wird ausgedruckt database.example.com
.
Um es zu pingen, können Sie natürlich die Ausgabe auswerten und als Argument verwenden:
ping $(ssh -G database | awk '/^hostname / { print $2 }')
Sie müssen dies nicht tunscp
, aber Sie können die ssh
Debugging-Traces verwenden.
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Normalerweise können Sie dies tun host HostName
und Sie erhalten die IP-Adresse.
Wenn host
es nicht installiert ist (sollte es sein), können Sie nslookup HostName 8.8.8.8
die Google DNS-Server verwenden, um die Suche durchzuführen.
Um dies zu tun, muss entweder der Resolver Ihres Computers eine korrekte Konfiguration haben (in der Datei /etc/resolv.conf und möglicherweise /etc/nsswitch.conf) oder Sie müssen einen "vollständig qualifizierten Domänennamen" mit Host verwenden. domaiin und "TLD" (.org, .com, .net diese Art von Suffix).
~/.ssh/config
, was meiner Meinung nach der Punkt dieser Frage ist.
HostName
ist ein beliebiger Alias, kein Domainname.
Verwenden Sie einen gefälschten 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
und/etc/ssh/ssh_config
. Gibt es einen Grund, warum Sie nicht anhand der in der Konfiguration definierten Aliase scp können?