Come posso configurare SSH in modo da non dover digitare la mia password durante la connessione a un host?
Se usi GNOME, il seahorse application ("Password e chiavi di crittografia") può farlo per te: File -> Nuovo -> Chiave Shell sicura.
Se preferisci il terminale, esegui ssh-keygen -t <type>
per generare una coppia di chiavi. I tipi di coppie di chiavi valide sono:
Il programma ti chiederà una passphrase e una posizione in cui salvare la nuova chiave. Si consiglia di utilizzare il percorso predefinito suggerito perché tutti gli altri strumenti lo cercheranno lì.
Di nuovo, seahorse può farlo spesso per te - in My Personal Keys, fai clic con il tasto destro sulla chiave SSH e scegli Configura la chiave per la Shell sicura.
O, ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
nel terminale.
Oppure, completamente manuale passo-passo:
.ssh
nella directory home dell'utente remoto sull'host remoto.authorized_keys
(se non esiste già).umask
remoto sia più liberale del solito, rendi il file non scrivibile in gruppo: chmod go-w ~/.ssh ~/.ssh/authorized_keys
.~/.ssh/id_rsa.pub
) locale nel file ~/.ssh/authorized_keys
remoto.Se carichi la tua chiave privata in un ssh agent, manterrà la chiave decodificata in memoria. Vogliamo che questo eviti di reinserire la password ogni volta che Shell entra in un server.
Innanzitutto, è necessario avviare l'agente o caricare il percorso di un socket di comunicazione avviato in una variabile. L'esecuzione di ssh-agent su un terminale genererà comandi per l'assegnazione e l'impostazione delle variabili dell'agente. Questi comandi possono essere salvati in un file per l'uso in un terminale diverso. In alternativa, è possibile eseguire questi comandi e dimenticare di riutilizzare lo stesso agente in un altro terminale. ad esempio: eval $(ssh-agent)
.
Caricamento della chiave è una semplice questione di eseguire ssh-add
e dargli la passphrase.
Se si utilizza GNOME, gnome-keyring-daemon di solito fornisce la stessa funzionalità dell'agente SSH di ssh-agent, quindi non dovrebbe essere necessario avviare nulla. GNOME caricherà e sbloccherà automaticamente la chiave anche al login.
Se tutto è stato fatto correttamente, usare ssh [email protected]
non ti richiederà una password. Se c'è qualcosa di sbagliato nell'agente e non nella chiave, ti verrà chiesto di digitare la passphrase per la chiave e non la password per l'account utente.
Tutto ciò che utilizza ssh per la comunicazione funzionerà senza immettere la password dell'account utente quando la chiave corretta viene caricata nell'agente. Programmi come scp , sftp e rsync fai uso di questo.
id_dsa
anziché id_rsa
e ECDSA avrà id_ecdsa
.authorized_keys2
- ma è davvero improbabile che tu trovi qualcosa di più vecchio di 5.0 in uso.lsh
, ssh.com
e altri (Unix e non) server SSH non sono inclusi in questo tutorial.Copia della chiave pubblica su un host remoto:
ssh-copy-id -i ~/.ssh/id_rsa.pub myaccount @ remotehost # questo cat ~/.ssh/id_rsa.pub | ssh myaccount @ remotehost\ 'mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys '# o questo
ssh-agent> ~/.ssh/cross-terminal-agent . ~/.Ssh/cross-terminal-agente
Non hai specificato su quale Unix sei, su quale Unix ti stai collegando, quale Shell stai usando, quale variante SSH stai usando, ecc. Quindi alcuni di questi potrebbero aver bisogno di essere regolati leggermente; questo è basato su versioni ragionevolmente recenti di OpenSSH, che è usato su molte varianti di Unix.
Questo è tutto dal tuo sistema desktop locale.
ssh-keygen
Assicurati di utilizzare l'impostazione predefinita per il nome chiave. Ti suggerisco di do impostare una passphrase su quella chiave, altrimenti è un problema di sicurezza. "-t rsa" non sarebbe una cattiva idea, ma probabilmente non è necessaria.
ssh-copy-id [email protected]
Questo ti chiederà la password che useresti per accedere e configura le cose authorized_keys per te. (non c'è bisogno di farlo a mano)
Poi questo:
`ssh-agent`
o forse questo:
exec ssh-agent sh
o:
exec ssh-agent bash
Ciò avvierà un agente SSH in grado di contenere la chiave. Su molte varianti moderne di Unix, se hai effettuato il login graficamente, questo sarà già avvenuto. La prima variante (con i backtick) mette uno ssh-agent in background e imposta le variabili di ambiente per parlarci. I secondi due hanno l'agente che esegue una Shell per te, in modo che quando si esce da Shell, l'agente esca.
Molte varianti moderne di Unix avranno già un agente in esecuzione, specialmente se hai effettuato il login graficamente. Potresti provare "ps aux | grep ssh-agent
" o "ps -ef | grep ssh-agent
"; se qualcosa è già in esecuzione, usalo.
Quindi, finalmente:
ssh-add
Richiederà una passphrase; dagli quello che hai dato a ssh-keygen. Ci sono anche dei modi per farlo chiedere graficamente. E puoi inserire gli oggetti ssh-agent e ssh-add nei tuoi script di login (l'installazione è diversa a seconda della Shell che usi) per automatizzarla, ma alcune varianti di Unix (l'attuale Ubuntu Linux, per esempio) fanno la maggior parte automaticamente, quindi tutto quello che devi fare è creare una chiave e usare ssh-copy-id per configurarla sull'host remoto.
Ora, "ssh [email protected]
" dovrebbe funzionare senza richiedere alcuna autenticazione. Dietro le quinte, sta usando una chiave che ssh-agent sta tenendo, e chiede all'agente di fare i trucchi magici per farlo.
È possibile farlo anche in PuTTY su Windows.
Una volta che hai impostato la coppia di chiavi pubblica/privata (come mostrano le altre risposte qui), esegui PuttyGen. Qui, carica la chiave privata esistente che hai già configurato, quindi salvala come chiave privata PuTTY (ppk).
Quindi in PuTTY, fai semplicemente clic sulla sessione salvata a cui vuoi accedere automaticamente e fai clic su Carica. Da qui vai in Connessione -> Dati nel riquadro di sinistra e in "Nome utente accesso automatico" digita il nome utente per quel server remoto:
Successivamente accedi a Connection -> SSH -> Auth e cerca la ppk che hai fatto in PuttyGen:
Quindi torna alla pagina della sessione e salva la sessione caricata in precedenza.
Da una domanda molto simile su ServerFault , consiglierei di usare ssh-copy-id , che fa tutti i passi necessari per configurare le chiavi di autenticazione per voi:
ssh-copy-id è uno script che usa ssh per accedere a una macchina remota (presumibilmente usando una password di accesso, quindi l'autenticazione della password dovrebbe essere abilitata, a meno che tu non abbia fatto un uso intelligente di più identità)
Cambia anche le autorizzazioni della home dell'utente remoto, ~/.ssh e ~/.ssh/authorized_keys per rimuovere la scrittura di gruppo (che altrimenti impedirebbe l'accesso, se il sshd remoto ha StrictModes impostato nella sua configurazione).
Se viene fornita l'opzione -i, viene utilizzato il file di identità (predefinito su ~/.ssh/identity.pub), indipendentemente dal fatto che ci siano chiavi nel proprio ssh-agent.
Tutto ciò che devi fare è semplicemente questo:
ssh-copy-id [email protected]
Digita la tua password una volta, e sei a posto!
A parte tutto ciò che è già stato detto su come impostare le chiavi ssh, raccomando Portachiavi come un ssh-agent console frontend che consente di gestirne una solo per processo di sistema invece che per accesso.
So che ci sono già strumenti GNOME e KDE che fanno lo stesso, ma se sei il console junkie type questo è ottimo (e può essere usato su molti sistemi Unix).
Per usarlo, aggiungi semplicemente quanto segue al tuo ~/.bashrc
(simile per le altre shell):
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
[ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
PuTTY ha un'opzione -pw
che ti consente di creare un collegamento sul desktop in questo modo:
"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
Ho scritto questo tutorial molto molto breve dopo essere stato davvero VERAMENTE frustrato con tutorial DAVVERO VERAMENTE molto lunghi perché è davvero così semplice :)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/ #type password
ssh [email protected] #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
http://linuxproblem.org/art_9.html
Il tuo obiettivo
Vuoi usare Linux e OpenSSH per automatizzare le tue attività. Pertanto è necessario un accesso automatico dall'host A/utente a all'host B/utente b. Non si desidera immettere alcuna password, poiché si desidera chiamare ssh da uno script di Shell.
ssh-keygen
. (Se ti dice che devi specificare un tipo, fai ssh-keygen -t rsa
.) Quando ti chiede il percorso di un file, prendi il valore predefinito. Quando ti chiede una passphrase, premi invio per nessuna passphrase.cat ~/.ssh/id_rsa.pub
(o qualunque sia il percorso del file predefinito in ssh-keygen
, anche se dovresti avere un'installazione ssh
really old per essere diversa); copia l'output negli Appunti.~/.ssh/authorized_keys
(se ~/.ssh
non esiste, slogin
in qualche luogo, questo è il modo semplice e facile per farlo creare con le giuste autorizzazioni). Incolla il tuo blocco appunti (contenente il id_rsa.pub
dell'altro host) in questo file.Se vuoi fare tutto nel terminale in Linux:
Sull'host
cd ~/.ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "qualche testo di commento se vuoi" -f id_ArbitraryName
Gli elementi in {} sono opzioni, usa rsa o dsa e scegli la dimensione del bit (più grande è più sicuro)
Quindi è necessario aggiungere le autorizzazioni ai file authorized_keys e authorized_keys2.
cat id_ArbitraryName.pub >> authorized_keys
cat id_AribtraryName.pub >> authorized_keys2
Quindi scaricare il file id_AribtraryName nella casella da cui si desidera ssh. Se la casella di connessione è basata su unix, potrebbe essere necessario un file di configurazione (in PuTTY, qualcuno sopra lo ha coperto).
Sulla scatola di connessione
Nel tuo file di configurazione - vim ~/.ssh/config
Host example.Host.com # o il nome del tuo computer
Nome utente dell'utente
IdentityFile ~/.ssh/id_ArbitraryName
Il file di configurazione richiede le autorizzazioni di 600. La cartella SSh ha bisogno di 700.
Spero che ti aiuti se ti imbatti nel problema di configurazione che viene omesso molto.