Qual è la differenza tra Host e Nomehost in Config SSH?


23

La pagina man dice questo:

Ospite

Host Limita le seguenti dichiarazioni (fino alla parola chiave Host successiva) in modo che siano solo per quegli host che corrispondono a uno dei pattern indicati dopo la parola chiave. Se viene fornito più di un motivo, devono essere separati da uno spazio bianco. È possibile utilizzare un singolo `* 'come modello per fornire valori predefiniti globali per tutti gli host. L'host è l'argomento hostname fornito nella riga di comando (ovvero il nome non viene convertito in un nome host canonicalizzato prima della corrispondenza).

Una voce di modello può essere annullata prefissandola con un punto esclamativo (`! '). Se viene abbinata una voce negata, la voce Host viene ignorata, indipendentemente dal fatto che qualsiasi altro motivo sulla riga corrisponda. Le corrispondenze negate sono pertanto utili per fornire eccezioni per le corrispondenze con caratteri jolly.>

Vedi MOTIVI per maggiori informazioni sui motivi.

Nome host

Nomehost Specifica il nome host reale a cui accedere. Questo può essere usato per specificare soprannomi o abbreviazioni per gli host. Se il nome host contiene la sequenza di caratteri `% h ', questo verrà sostituito con il nome host specificato nella riga di comando (questo è utile per manipolare nomi non qualificati). L'impostazione predefinita è il nome indicato nella riga di comando. Sono anche consentiti indirizzi IP numerici (sia nella riga di comando che nelle specifiche HostName).

Ad esempio, quando voglio creare una configurazione SSH per GitHub, quali dovrebbero essere rispettivamente Host e HostName?


3
In sostanza: Hostè la stringa che l'utente fornisce come input sulla CLI quando invoca SSH; HostNameè la stringa che la volontà client SSH in uscita attraverso la rete quando si tenta di connettersi al server.
sampablokuper,

Risposte:


15

Per github.com ~/.ssh/configpotresti sembrare così

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Per nome host: come dice man ti permette di specificare l'abbreviazione per host. Ad esempio, se ~/.ssh/configassomigli a questo

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

Quindi quando si digita

  • ssh host1accedi effettivamente a host1.example.com
  • ssh host2accedi a anotherdomain.com

Immagino che nel tuo secondo ~/.ssh/configesempio intendessi "Nome host" anziché "Host" ?
Dave,

6

In semplice utilizzo:

Host è il nome host effettivo e non c'è HostName

O

Hostè il soprannome dell'host ed HostNameè l'effettivo nome host.

Esempio semplice:

$ 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>"

Nota: la pagina man è tecnicamente corretta, è solo un po 'stranamente formulata. Vorrei aggiungere qualche parola in più per chiarezza:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.


1

Recentemente volevo fare qualcosa con host e hostname, ma ho dimenticato l'esatta sintassi ... ma cercare su Google era un casino e la pagina man non era troppo utile. Quindi, supponendo che ci siano altri che hanno lo stesso bisogno, ecco i miei bocconcini.

L'host specifica l'argomento della riga di comando e potrebbe essere considerato come a) nome host / IP effettivo, b) stenografia, c) alias. HostName è il nome host / IP reale della macchina a cui ci si sta connettendo. Nel campo Nome host, è possibile utilizzare% h come stringa del nome host specificata nella riga di comando. (Questa era la parte che volevo usare nel mio esempio.)

Quindi, supponiamo che tu abbia un set di host in cui il nome host inizia con my-proj-host -... e sono tutti nel dominio .my.proj.domain.com, e devo accedere ad essi usando una chiave ssh specifica my-proj-id-rsa e ID utente specifico my-proj-user. Per semplificarmi la vita, aggiungerei quanto segue al file ~ / .ssh / config

Ospita my-proj-host *

Nome host% h.my.proj.domain.com

Utente my-proj-user

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

Ora posso digitare

ssh my-proj-host-1234

Senza la configurazione, sarebbe stato

ssh -i ~ / .ssh / my-proj-id-rsa my-proj-user@my-proj-host-1234.my.proj.domain.com

risparmiando un po 'di battitura (e errori di battitura).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.