Auf der Manpage steht Folgendes:
Gastgeber
Host Beschränkt die folgenden Deklarationen (bis zum nächsten Host-Schlüsselwort) auf Hosts, die einem der nach dem Schlüsselwort angegebenen Muster entsprechen. Wenn mehr als ein Muster angegeben wird, sollten diese durch Leerzeichen getrennt werden. Ein einzelnes „*“ als Muster kann verwendet werden, um globale Standardwerte für alle Hosts anzugeben. Der Host ist das Hostnamenargument, das in der Befehlszeile angegeben wird (d. h. der Name wird vor dem Abgleich nicht in einen kanonisierten Hostnamen umgewandelt).
Ein Mustereintrag kann negiert werden, indem ihm ein Ausrufezeichen (`!') vorangestellt wird. Wenn ein negierter Eintrag übereinstimmt, wird der Host-Eintrag ignoriert, unabhängig davon, ob andere Muster in der Zeile übereinstimmen. Negierte Übereinstimmungen sind daher nützlich, um Ausnahmen für Platzhalterübereinstimmungen bereitzustellen.>
Weitere Informationen zu Mustern finden Sie unter MUSTER.
Hostname
HostName Gibt den tatsächlichen Hostnamen an, bei dem die Anmeldung erfolgt. Dies kann verwendet werden, um Spitznamen oder Abkürzungen für Hosts anzugeben. Wenn der Hostname die Zeichenfolge „%h“ enthält, wird diese durch den in der Befehlszeile angegebenen Hostnamen ersetzt (dies ist nützlich, um nicht qualifizierte Namen zu bearbeiten). Der Standardwert ist der in der Befehlszeile angegebene Name. Numerische IP-Adressen sind ebenfalls zulässig (sowohl in der Befehlszeile als auch in HostName-Angaben).
Wenn ich beispielsweise eine SSH-Konfiguration für GitHub erstellen möchte, wie müssen dann „Host“ und „Hostname“ lauten?
Antwort1
Für github.com ~/.ssh/config
könnte es so aussehen
Host github.com
IdentityFile ~/.ssh/key_name_for_github
Für Hostname: Wie man sagt, können Sie eine Abkürzung für Host angeben. Wenn Ihr Name beispielsweise ~/.ssh/config
so aussieht
Host host1
HostName host1.example.com
Host host2
HostName anotherdomain.com
Wenn Sie dann
ssh host1
Sie melden sich tatsächlich anhost1.beispiel.comssh host2
Einloggen ineine anderedomain.com
Antwort2
Im einfachen Sinn:
Host
ist der tatsächliche Hostname und es gibt keineHostName
ODER
Host
ist der Spitzname des Hosts und HostName
ist der tatsächliche Hostname.
Einfaches Beispiel:
$ cat ~/.ssh/config
Host dev
Hostname <hostname>
User <username>
IdentityFile <path_to_private_key>
$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"
Hinweis: Die Manpage ist technisch korrekt, sie ist nur etwas seltsam formuliert. Ich würde der Klarheit halber noch ein paar Worte hinzufügen:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.
Antwort3
Ich wollte vor Kurzem etwas mit Host und Hostname machen, habe aber die genaue Syntax vergessen ... aber danach zu googeln war ein Chaos und die Manpage war nicht sehr hilfreich. Also, vorausgesetzt, es gibt andere, die dasselbe brauchen, hier meine Tipps.
Host gibt das Befehlszeilenargument an und kann als a) tatsächlicher Hostname/IP, b) Kurzform, c) Alias betrachtet werden. Der Hostname ist der echte Hostname/die echte IP der Maschine, mit der Sie sich verbinden. Im Feld Hostname können Sie %h als Hostnamenzeichenfolge verwenden, die Sie in der Befehlszeile angeben. (Dies war der Teil, den ich in meinem Beispiel verwenden wollte.)
Nehmen wir also an, Sie haben eine Reihe von Hosts, deren Hostname mit my-proj-host-... beginnt und die sich alle in der Domäne .my.proj.domain.com befinden, und ich muss mich bei ihnen mit dem spezifischen SSH-Schlüssel my-proj-id-rsa und der spezifischen Benutzer-ID my-proj-user anmelden. Um mir das Leben zu erleichtern, würde ich Folgendes zur Datei ~/.ssh/config hinzufügen
Host mein-Projekt-Host*
Hostname %h.my.proj.domain.com
Benutzer my-proj-user
Identitätsdatei ~/.ssh/my-proj-id-rsa
Jetzt kann ich eingeben
ssh mein-Projekt-Host-1234
Ohne die Konfiguration wäre das
ssh -i ~/.ssh/meine-Projekt-ID-rsa[email geschützt]
und spart ein bisschen Tipparbeit (und Tippfehler).