Configurazione SSH: sovrascrive il nome utente predefinito


271

È possibile configurare sshper sapere quale dovrebbe essere il mio nome utente?

Di default usa l'attuale nome utente, che non è corretto nel mio caso.

Sono su un laptop in prestito, e il mio nome utente è loaner, ma voglio dire sshche è il mio nome utente buck.

Punti bonus: il mio nome utente a casa è bgolemon. Se potessi configurare il nome utente per host sarebbe ancora meglio.


3
Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra essere fuori tema perché non si tratta di programmazione o sviluppo. Consulta quali argomenti posso chiedere qui nel Centro assistenza. Forse Super User o Unix & Linux Stack Exchange sarebbero un posto migliore da chiedere. Vedi anche Dove posso pubblicare domande su Dev Ops?
17-17

3
Questa è una buona domanda!
Nicolas S.Xu,

la risposta accettata qui è di qualità migliore rispetto a quella di un superutente: include l'uso della direttiva globale (predefinito) e i commenti aggiunti chiariscono le priorità della direttiva
Rondo

Risposte:


449

Crea un file chiamato configdentro ~/.ssh. All'interno del file è possibile aggiungere:

Host *
    User buck

Oppure aggiungi

Host example
    HostName example.net
    User buck

Il secondo esempio imposta un nome utente ed è specifico del nome host, mentre il primo esempio imposta solo un nome utente. E quando usi il secondo non devi usarlo ssh example.net; ssh examplesarà abbastanza.


134
Probabilmente vale la pena sottolineare che in base a man ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.Quindi la Host *sezione dovrebbe probabilmente andare alla fine.
quodlibetor,

9
Vale la pena notare che il file di configurazione verrà elaborato in modo dall'alto verso il basso, popolando ciascun campo (Utente, Nome host ...) e saltando i campi ripetuti se vengono abbinate più direttive Host. Se si definisce Host *, User jdoein alto, e poi definire Host example, HostName abc.example.com, User root, il tentativo ssh examplesarà lo stesso come se hai inserito ssh jdoe@abc.example.com. Per definire i valori predefiniti di ssh (es. User root), La Host *direttiva deve trovarsi in fondo al file di configurazione.
sig.

17
Inoltre, non dimenticare chmod 600 su .ssh / config
Sven

Si noti che se ci sono più nomi host da cui il server è accessibile (o se si desidera lo stesso nome utente predefinito per più server), è necessario modificare la prima riga Host server1.local example.net *.example.orge sbarazzarsi della HostNameriga.
Lèse majesté,

44

Se si desidera solo ssh un paio di volte, come ad esempio su un computer in prestito o in comune, provare:

ssh buck@hostname

o

ssh -l buck hostname

1
Grazie, ma ho già familiarità con questo. Sembra ridondante specificare buck @ host quando è sempre buck @ host. Sto cercando di trovare un metodo per rappresentare queste informazioni in un file di configurazione.
bukzor,

1
Hai considerato qualcosa di semplice come alias sshhostname = 'ssh buck @ hostname'?
gpojd,

Sì. La risposta di Learath2 è esattamente quello che stavo cercando. Posso controllare questo nel mio repository dotfiles e non preoccuparmene mai più.
bukzor,

Ho preso l'alias root perché mi collego a macchine per client diversi, in cui il mio nome utente è diverso in ogni ambiente client. Un altro approccio suppongo sarebbe quello di avere diversi ambienti shell locali per impostare le impostazioni ssh e relative per ciascun client. O una macchina virtuale per client.
Nick Spacek,

6

man ssh_config dice

Utente

Specifica l'utente come accedere come. Ciò può essere utile quando un diverso nome utente viene utilizzato su macchine diverse. Questo evita il problema di dover ricordare di dare il nome utente sulla riga di comando.


1
"Identità" in questo caso equivale al normale utilizzo di "password". Questi sono i dati che vi autentica, ma non aiuta specifica chi si sta cercando di autenticarsi come .
bukzor,

Ops. C'è anche un'impostazione utente lì dentro.
nes1983,

0

Puoi usare una scorciatoia. Crea un file .bashrc nella tua home directory. Lì puoi aggiungere quanto segue:

alias sshb="ssh buck@host"

Per rendere disponibile l'alias nel tuo terminale, puoi chiudere e aprire il tuo terminale oppure eseguirlo

source ~/.bashrc

Quindi puoi connetterti semplicemente digitando:

sshb

1
Questo è ottimo per un host specifico, ma mentre continuo a connettermi a un trilione di server diversi, questo è piuttosto inutile. Piuttosto impostare .ssh/configcon le impostazioni appropriate. Sono venuto alla ricerca del *wildcare (e ho imparato che dovrebbe essere in fondo).
Mazunki,

0

C'è una gemma di Ruby che interfaccia il tuo sshfile di configurazione che si chiama sshez.

Tutto quello che devi fare è sshez <alias> username@example.com -p <port-number>, quindi puoi connetterti utilizzando ssh <alias>. È anche utile poiché puoi elencare i tuoi alias usando sshez liste rimuoverli facilmente usando sshez remove alias.

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.