Come evitare di scrivere ssh-add ogni volta


11

Ho letto e seguito alcuni documenti online su come impostare un agente ssh in modo che non ho bisogno di digitare la password ogni volta che ssh su un computer remoto.

Tuttavia, con l'aiuto di ssh-agent , devo ancora fare ssh-addogni volta che riavvio la shell. L' ssh-addpoi mi chiede di inserire la password per sbloccare la chiave privata.

Enter passphrase for key '/home/xx/.ssh/id_rsa':

Invece di digitare la mia password per la macchina remota, mi viene chiesto di digitare la password per la chiave privata. È come uscire da un purgatorio e dopo mi sono ritrovato in un inferno. Sembra che id_rsa sia aggiunto temporaneamente all'agente ssh in una sessione , perché ogni volta che accedo e scrivossh-add -l . Ottengo:

The agent has no identities.

Posso chiedere in che modo memorizzare permanentemente la chiave (id_rsa) in ssh-agent? Grazie

EDIT: questo è quello che ho fatto ssh-agent. Ho aggiunto il seguente blocco in~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi

Vuoi dire che devi digitare la tua passphrase ogni volta che accedi o ogni volta che apri una finestra della shell? Dici di aver seguito un po 'di documentazione online, ma ssh-agent funziona subito su Ubuntu, quindi non avresti dovuto fare nulla. Che cosa hai fatto esattamente?
Gilles 'SO- smetti di essere malvagio' il

Devo digitare la passphrase ogni volta che ssh nella macchina remota. MA non è la passphrase per accedere alla macchina remota, è la passphrase per sbloccare la mia chiave privata (id_rsa).
ssgao,

So che è la frase chiave della tua chiave. Quello che sto chiedendo è quello che hai fatto per impostare ssh-agent, e se l'esecuzione ssh-addha un effetto che dura più a lungo rispetto alla finestra di shell che è stata digitata in.
Gilles 'SO-tappa è male'

L'effetto dura fino a quando non esco dal sistema (locale). Ho messo quello che ho fatto con ssh-agentil post.
ssgao,

Sembra un comportamento normale: è necessario digitare la passphrase una volta per sessione per sbloccare la chiave. Se la chiave sbloccata fosse memorizzata da qualche parte, ciò vanificherebbe lo scopo di avere una passphrase sulla chiave: chiunque ottenga la chiave sbloccata memorizzata potrebbe usarla. Ti aspettavi qualcos'altro? Vuoi che la chiave venga archiviata in memoria dopo il logout in modo che sia disponibile fino al prossimo riavvio?
Gilles 'SO- smetti di essere malvagio' il

Risposte:


6

Ho installato portachiavi.

sudo apt-get install keychain

Se stai eseguendo bash devi aggiungere alcuni comandi al tuo .bash_profile Se non hai un .bash_profile creane uno nella tua cartella home. Aggiungi queste righe:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

All'inizio di una giornata lavorativa accederò. Quando apro un terminale, mi verrà richiesta una volta la mia passphrase. Per tutti gli altri nuovi terminali e connessioni non mi verrà richiesta nuovamente la mia passphrase.


4
come è diverso dalla digitazione ssh-addnel terminale?
ssgao,

sì, ma dovrai digitare ssh-add ogni volta ... facendo questo eliminerai i tuoi 2 passaggi -> eval "$ (ssh-agent)" e ssh-add
abhishek

1

Quello che stai cercando è meno sicuro, ma può essere realizzato usando l'autenticazione con chiave pubblica senza la necessità di ssh-agent. Un'opzione più sicura è quella di utilizzare l'autenticazione con chiave pubblica con una passphrase mentre si disattiva l'autenticazione con password sul server ssh, ma questo non è quello che hai richiesto. Vedi il link in fondo a questa risposta per istruzioni se invece decidi di farlo.

Per usare ssh senza che venga richiesta alcuna passphrase, è necessario generare la coppia di chiavi lasciando vuoto il campo passphrase.

Per verificare se hai già generato una coppia di chiavi, controlla i file id_rsa e id_rsa.pub nella tua directory ~ / .ssh. Se sono già lì, puoi eliminarli o spostarli per creare una nuova coppia di chiavi.

Nota: se li elimini perderai l'accesso a tutti i server SSH che stai utilizzando, quindi le vecchie chiavi per autenticarti se l'autenticazione della password è disattivata sul server.

Per creare una nuova coppia di chiavi, eseguire il comando seguente:

ssh-keygen -t rsa

Accettare la posizione predefinita per le chiavi e lasciare vuota la passphrase.

Per dare la tua chiave pubblica al server ssh a cui vuoi connetterti, usa il seguente comando:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Dopo aver completato questi passaggi, sarai in grado di accedere al server remoto senza una password dal computer che stai utilizzando.

Riferimento: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/


0

Qualche tempo fa, improvvisamente ho iniziato a chiedermi una passphrase per sbloccare la mia chiave ssh mentre lo facevo git push. Si è scoperto che per interrompere la richiesta di una passphrase era sufficiente aggiungere SSH Key Agent (portachiavi GNOME: SSH Agent) alle applicazioni di avvio (nel mio caso - solo per selezionare la casella di controllo):

inserisci qui la descrizione dell'immagine


Potresti ampliare la tua risposta con maggiori dettagli su come farlo e perché risolverebbe il problema in questione? Grazie.
Byte Commander
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.