Was ist der Unterschied zwischen Host und Hostname in der SSH-Konfiguration?

Was ist der Unterschied zwischen Host und Hostname in der SSH-Konfiguration?

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/configkö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/configso aussieht

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

Wenn Sie dann

  • ssh host1Sie melden sich tatsächlich anhost1.beispiel.com
  • ssh host2Einloggen ineine anderedomain.com

Antwort2

Im einfachen Sinn:

Hostist der tatsächliche Hostname und es gibt keineHostName

ODER

Hostist der Spitzname des Hosts und HostNameist 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).

verwandte Informationen