Come posso impostare SSH in modo da non dover digitare la mia password?
Come posso impostare SSH in modo da non dover digitare la mia password quando mi connetto a un host?
Come posso impostare SSH in modo da non dover digitare la mia password quando mi connetto a un host?
Se ti capita di usare GNOME, l'applicazione seahorse (“Passwords and Encryption Keys”) può farlo per te: File -> New -> Secure Shell Key.
Se preferite il terminale, eseguite ssh-keygen -t <type>
per generare una coppia di chiavi. I tipi di coppia di chiavi validi sono:
Il programma vi chiederà una passphrase e un percorso dove salvare la nuova chiave. Si raccomanda di usare il percorso predefinito suggerito perché tutti gli altri strumenti lo cercheranno lì.
Di nuovo, seahorse può spesso farlo per voi - in My Personal Keys, cliccate con il destro sulla vostra chiave SSH e scegliete Configure key for secure shell.
Oppure, ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
nel terminale.
Oppure, completamente manualmente passo dopo passo:
.ssh
nella home directory dell'utente remoto sull'host remoto. authorized_keys
(se non esiste già). umask
sia più liberale del solito, fate in modo che il file non sia group-writable: chmod go-w ~/.ssh ~/.ssh/authorized_keys
. ~/.ssh/id_rsa.pub
) nel file remoto ~/.ssh/authorized_keys
. Se caricate la vostra chiave privata in un agente ssh, esso terrà la chiave decrittata in memoria. Vogliamo questo per evitare di reinserire la password ogni volta che entriamo in un server.
Per prima cosa, l'agente deve essere avviato o il percorso di un socket di comunicazione lanciato deve essere caricato in una variabile. L'esecuzione di ssh-agent su un terminale genererà dei comandi per assegnare e impostare le variabili dell'agente. Questi comandi possono essere salvati in un file per essere utilizzati in un altro terminale. In alternativa, si potrebbero eseguire questi comandi e dimenticare di riutilizzare lo stesso agente in un altro terminale. es: eval $(ssh-agent)
.
Caricare la chiave è una semplice questione di eseguire ssh-add
e dargli la pass phrase.
Se stai usando GNOME, gnome-keyring-daemon di solito fornisce la stessa funzionalità dell'agente SSH di ssh-agent, quindi non dovresti aver bisogno di avviare nulla. Anche GNOME caricherà e sbloccherà automaticamente la chiave al momento del login.
Se tutto è stato fatto correttamente, usando ssh user@server
non verrà richiesta la password. Se qualcosa è sbagliato con l'agente e non con la chiave, vi verrà chiesto di digitare la frase di accesso per la chiave, e non la password per l'account utente.
Tutto ciò che usa ssh per la comunicazione funzionerà senza inserire la password dell'account utente quando la chiave corretta è caricata nell'agente. Programmi come scp , sftp e rsync fanno uso di questo.
id_dsa
invece di id_rsa
, e ECDSA avrà id_ecdsa
.authorized_keys2
- ma è davvero improbabile che troverai qualcosa di più vecchio della 5.0 in uso. lsh
, ssh.com
, e altri server SSH (Unix e non) non sono inclusi in questo tutorial. Copiare la chiave pubblica su un host remoto:
Salvare le variabili dell'agente per il riutilizzo (esempio elaborato)
ssh-agent \> ~/.ssh/cross-terminal-agent . ~/.ssh/cross-terminal-agent
Non hai specificato su quale Unix sei, a quale Unix ti stai connettendo, quale shell stai usando, quale variante di SSH stai usando, ecc. Quindi alcune di queste cose potrebbero aver bisogno di essere regolate 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 usare il default per il keyname. Vi suggerisco di fare impostare una passphrase su quella chiave, altrimenti è un problema di sicurezza. “-t rsa” non sarebbe una cattiva idea, ma probabilmente non è necessario.
ssh-copy-id username@server
Questo vi chiederà la password che userete per accedere, e imposterà la roba authorized\keys per voi. (non c'è bisogno di farlo a mano)
Poi, questo:
`ssh-agent`
o forse questo:
exec ssh-agent sh
oppure:
exec ssh-agent bash
Questo avvierà un agente SSH che può contenere la vostra chiave. Su molte varianti moderne di Unix, se avete fatto il login grafico, questo avrà già avuto luogo. La prima variante (con i trattini) mette un agente ssh in background e imposta le variabili d'ambiente per parlargli. Le seconde due hanno l'agente che esegue una shell per voi, in modo che quando uscite dalla shell, l'agente esce.
Molte varianti moderne di Unix avranno già un agente in esecuzione per voi, specialmente se vi siete loggati graficamente. Potreste provare “ps aux | grep ssh-agent
” o “ps -ef | grep ssh-agent
”; se qualcosa è già in esecuzione, usate quello.
Poi, finalmente:
ssh-add
Vi chiederà una passphrase; dategli quella che avete dato a ssh-keygen. C'è anche un modo per farlo chiedere graficamente. E potete mettere la roba di ssh-agent e ssh-add nei vostri script di login (la configurazione è diversa a seconda della shell che usate) per automatizzare questo, ma alcune varianti di Unix (l'attuale Ubuntu Linux, per esempio) fanno la maggior parte di questo automaticamente, così che tutto quello che dovete fare è creare una chiave e usare ssh-copy-id per impostarla sull'host remoto.
Ora, “ssh username@server
” dovrebbe funzionare senza chiedere alcuna autenticazione. Dietro le quinte, sta usando una chiave che lo ssh-agent sta tenendo, e chiede all'agente di fare i magici trucchi di firma per lui.
È possibile farlo anche in PuTTY su Windows.
Una volta che hai impostato la coppia di chiavi pubbliche/private (come mostrano altre risposte qui) lancia PuttyGen. Lì, carica la chiave privata esistente che hai già impostato, e poi salvala come chiave privata PuTTY (ppk).
Poi in PuTTY, basta cliccare sulla sessione salvata in cui vuoi fare l'accesso automatico e cliccare su Load. Da qui vai in Connection -> Data nel pannello di sinistra, e in “Auto-login username” scrivi il nome utente per quel server remoto:
Dopo di che vai in Connection -> SSH -> Auth, e cerca il ppk che hai fatto in PuttyGen:
Poi torna alla pagina delle sessioni e salva la sessione che hai caricato prima.
Da una domanda molto simile su ServerFault , raccomanderei di usare ssh-copy-id , che fa tutti i passi coinvolti nell'impostazione delle chiavi di autenticazione per te:
ssh-copy-id è uno script che usa ssh per accedere a una macchina remota (presumibilmente usando una password di accesso, quindi l'autenticazione con password dovrebbe essere abilitata, a meno che non si sia fatto un uso intelligente di identità multiple)
Cambia anche i permessi della home dell'utente remoto, ~/. ssh, e ~/.ssh/authorized\keys per rimuovere la scrivibilità del gruppo (che altrimenti ti impedirebbe di accedere, se lo sshd remoto ha StrictModes impostato nella sua configurazione).
Se viene data l'opzione -i allora viene usato il file di identità (di default ~/.ssh/identity.pub), indipendentemente dal fatto che ci siano chiavi nel tuo ssh-agent.
Tutto quello che devi fare è semplicemente questo:
ssh-copy-id user@host
Digita la tua password una volta, e sei pronto a partire!
A parte tutto quello che è già stato detto su come impostare le chiavi ssh, raccomando Keychain come frontend di console ssh-agent che permette di gestirne una sola per processo di sistema invece che per login.
So che ci sono già strumenti di GNOME e KDE che fanno lo stesso, ma se sei il tipo da console junkie questo è ottimo (e può essere usato sulla maggior parte dei sistemi Unix).
Per usarlo, aggiungete semplicemente quanto segue al vostro ~/.bashrc
(simile per 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
Ho scritto questo brevissimo tutorial dopo essere stato VERAMENTE frustrato da tutorial VERAMENTE 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 destID@destMachine:/tmp/ #type password
ssh destID@destMachine #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 i tuoi compiti. Quindi avete bisogno di un login automatico dall'host A / utente a all'host B / utente b. Non volete inserire alcuna password, perché volete chiamare ssh da uno script di shell.
Putty ha un'opzione -pw
che vi permette di creare un collegamento sul desktop come questo:
"C:\Program Files\PuTTY\putty.exe" -ssh user@192.168.2.2 -pw your_password
ssh-keygen
. (Se ti dice che devi specificare un tipo, fai ssh-keygen -t rsa
.) Quando ti chiede una posizione del file, prendi quella predefinita. Quando ti chiede una passphrase, premi enter per nessuna passphrase. cat ~/.ssh/id_rsa.pub
(o qualunque fosse la posizione predefinita del file in ssh-keygen
, anche se dovresti avere un'installazione di ssh
molto vecchia perché sia diversa); copia l'output negli appunti. ~/.ssh/authorized_keys
(se ~/.ssh
non esiste, slogin
da qualche parte; questo è il modo semplice e facile per farlo creare con i giusti permessi). Incollate i vostri appunti (contenenti lo id_rsa.pub
dell'altro host) in questo file.Se volete fare tutto nel terminale in Linux:
Sull'host
cd ~/.ssh/
ssh-keygen -t {rsa|dsa} -b {1024|2048|4096} -C “del testo di commento se vuoi” -f id_ArbitraryName
Le voci nel {} sono opzioni, usa rsa o dsa e scegli la dimensione del bit (più grande è più sicuro)
Poi devi aggiungere i permessi ai file authorized\keys e authorized\keys2.
cat id_ArbitraryName.pub >> authorized_keys
cat id_AribtraryName.pub >> authorized_keys2
Poi scaricate il file id_AribtraryName sulla macchina da cui volete ssh. Se la casella di connessione è basata su unix, potrebbe essere necessario un file di configurazione (in Putty, qualcuno sopra ne ha parlato).
Sulla box di connessione
Nel tuo file di configurazione - vim ~/.ssh/config
Host example.host.com # o il nome del tuo computer
Nome utente
IdentityFile ~/.ssh/id_ArbitraryName
Il file di configurazione necessita di permessi 600. La cartella SSh ha bisogno di 700.
Spero che questo aiuti se vi imbattete nel problema della configurazione che viene omesso spesso.