Was ist der Unterschied zwischen Host und HostName in SSH Config?

23

Die Manpage sagt folgendes:

Wirt

Host Beschränkt die folgenden Deklarationen (bis zum nächsten Host-Schlüsselwort) auf diejenigen Hosts, die mit einem der nach dem Schlüsselwort angegebenen Muster übereinstimmen. Wenn mehr als ein Muster bereitgestellt wird, sollten diese durch Leerzeichen getrennt werden. Ein einzelnes "*" als Muster kann verwendet werden, um globale Standardeinstellungen für alle Hosts bereitzustellen. Der Host ist das in der Befehlszeile angegebene Argument für den Hostnamen (dh der Name wird vor dem Abgleichen nicht in einen kanonisierten Hostnamen konvertiert).

Ein Mustereintrag kann negiert werden, indem 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 Sie sich anmelden möchten. Dies kann verwendet werden, um Kurznamen 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). Die Standardeinstellung ist der in der Befehlszeile angegebene Name. Es sind auch numerische IP-Adressen zulässig (sowohl in der Befehlszeile als auch in den Hostnamen-Angaben).

Wenn ich zum Beispiel eine SSH-Konfiguration für GitHub erstellen möchte, was sollte Host bzw. HostName sein?

TheFooProgrammer
quelle
3
Im Wesentlichen: HostIst die Zeichenfolge, die der Benutzer beim Aufrufen von SSH als Eingabe für die CLI eingibt. HostNameist die Zeichenfolge, die der SSH-Client beim Versuch, eine Verbindung zum Server herzustellen, über das Netzwerk ausgibt .
sampablokuper

Antworten:

15

Bei github.com ~/.ssh/configkönnte das so aussehen

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Für hostname: Wie man sagt, können Sie die Abkürzung für host angeben. Zum Beispiel, wenn Sie so ~/.ssh/configaussehen

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

Dann, wenn Sie tippen

  • ssh host1Sie melden sich tatsächlich bei host1.example.com an
  • ssh host2Melden Sie sich bei anotherdomain.com an
int
quelle
Ich vermute, dass Sie in Ihrem zweiten ~/.ssh/configBeispiel "Hostname" statt "Host" gemeint haben ?
Dave
6

Im einfachen Gebrauch:

Host ist der tatsächliche Hostname und es gibt keine HostName

ODER

Hostist der Spitzname des Hosts & 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 möchte 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.

mblakesley
quelle
1

Ich wollte vor kurzem etwas mit Host und Hostname machen, habe aber die genaue Syntax vergessen ... aber darüber zu googeln war ein Chaos und die Manpage war nicht allzu hilfreich. Unter der Annahme, dass es andere gibt, die das gleiche Bedürfnis haben, sind hier meine Leckerbissen.

Host gibt das Befehlszeilenargument an und kann als a) tatsächlicher Hostname / IP, b) Kurzform, c) Alias ​​angesehen werden. Der Hostname ist der tatsächliche Hostname / die IP-Adresse des Computers, mit dem Sie eine Verbindung herstellen. Im Feld Hostname können Sie% h als Hostnamen-Zeichenfolge verwenden, die Sie in der Befehlszeile angeben. (Dies war der Teil, den ich in meinem Beispiel verwenden wollte.)

Angenommen, 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 bei denen ich mich mit einem bestimmten SSH-Schlüssel anmelden muss my-proj-id-rsa und spezifische Benutzer-ID my-proj-user. Um mir das Leben zu erleichtern, füge ich der Datei ~ / .ssh / config Folgendes hinzu

Host my-proj-host *

Hostname% h.my.proj.domain.com

Benutzer my-proj-user

IdentityFile ~ / .ssh / my-proj-id-rsa

Jetzt kann ich eintippen

ssh mein-proj-host-1234

Ohne die Konfiguration wäre das gewesen

ssh -i ~ / .ssh / my-proj-id-rsa [email protected]

Ein bisschen Tipparbeit (und Tippfehler) sparen.

Marcus Yoo
quelle