Carattere jolly di configurazione SSH sul nome host espanso


23

Voglio avere un carattere jolly nella mia configurazione SSH per impostare il mio nome utente predefinito su un valore particolare per tutti gli host in un determinato dominio. Ma voglio anche avere dei nomi brevi per alcuni host particolari. Mi aspettavo che qualcosa del genere funzionasse:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

Con queste impostazioni, se digito ssh host1.mydomain.comrestituisce myusername@host1.mydomain.com, ma se ssh host1digito non applica le mie impostazioni utente e invece vedo mylocalusername@host1.mydomain.com.

C'è un modo per far corrispondere i caratteri jolly sul nome host espanso finale in modo da poter digitare la forma breve o lunga e ottenere gli stessi risultati?


Che cosa succede se si cambia l'ordine, mettendo la sezione jolly seconda.
ammette il

L'hai provato? Sono abbastanza sicuro che ti dia il nome utente giusto con il dominio sbagliato, semmai.
Mu Mind,

Non l'ho provato, ecco perché l'ho trasformato in una risposta di commento come qualcosa da provare, anziché in una risposta votabile.
ammette il

Risposte:


12

Usa semplicemente:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • I modelli alternativi sono forniti da uno spazio di delimitazione in una riga Host .
  • Vengono applicati tutti i pattern host corrispondenti .
  • Se un'opzione si presenta più volte, viene utilizzata solo la prima occorrenza

3
Ciò consente di risparmiare un po 'di battitura almeno. Sembra che tu non sia a conoscenza di alcun modo per evitare di duplicare le informazioni del dominio?
Mu Mind

Sarebbe bello se SSH potesse semplicemente provare ad aggiungere il dominio predefinito, ovvero "lan" o "mycompany.com", invece di doverlo codificare nel file di configurazione.
Saustrup,

16

Puoi semplicemente impostare CanonicalizeHostnamesu yesreparse ssh_config con il nome host canonico del tuo alias. Per esempio:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

In alternativa, se si desidera rimappare anche i nomi host, è possibile utilizzare Matchanziché Hostabbinare solo i nomi host canonici. Ad esempio, in:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

La direttiva utente non verrà impostata al momento della connessione host2.mydomain.com.


Nota che ci sono ancora vecchie versioni di ssh che non supportano queste opzioni - se ti imbatti in una di quelle, come ho fatto io, la soluzione Host funzionerà comunque.
Kyrstellaine,

2

Anche l'utilizzo di CanonicalDomains funzionerà.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Se si desidera avere un nome breve per un determinato host, ad esempio:

Host h
Hostname host1

Non consiglierei un nome così breve, comunque.


1

Puoi usare% h.mydomain.com nel tuo .ssh / config.


 Host host?
 User myusername
 Hostname %h.mydomain.com

Host host?? User myusername Hostname %h.mydomain.com

Host host??? User myusername Hostname %h.mydomain.com

Ora puoi fare:

ssh host1
invece di
ssh host1.mydomain.com
ssh host10
invece di
ssh host10.mydomain.com
e ssh host100

Saluti, Bert

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.