it-swarm.it

Come evitare di ricevere la passphrase ogni volta che invio a Bitbucket

Ho impostato le mie cose ssh con l'aiuto di questa guida , e funzionava bene (potevo eseguire hg Push senza che sia richiesta una passphrase). Cosa sarebbe potuto succedere tra allora e adesso, considerando che sto ancora usando la stessa directory home.

$ cat .hg/hgrc 
[paths]
default = ssh://[email protected]/tshepang/bloog

$ hg Push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
238
tshepang

Devi usare un agente ssh. Risposta breve: prova

$ ssh-add

prima di spingere. Fornire la passphrase quando richiesto.

Se non stai già eseguendo un agente ssh riceverai il seguente messaggio:

Could not open a connection to your authentication agent.

In quella situazione, puoi avviarne uno e configurare il tuo ambiente in questo modo

eval $(ssh-agent)

Quindi ripeti ssh-add comando.

Vale la pena dare un'occhiata alla pagina man dell'agente ssh .

363
jmtd

Un modo per risolverlo è con ssh-agent e ssh-add:

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

Successivamente, la passphrase viene salvata per la sessione corrente. e non verrà più chiesto.

48
stefano

Uso Keychain per la gestione delle chiavi ssh. È anche disponibile in Debian e quindi presumibilmente con Ubuntu

apt-get install keychain

Ecco la pagina del pacchetto portachiavi Debian . Come puoi vedere, il progetto non è molto attivo, ma funziona per me. Ho anche commentato un po 'su questo in un'altra risposta qui

29
Faheem Mitha

Crea (o modifica se esiste) il seguente file ~/.ssh/config:

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa
20
ness-EE

Per comodità, il metodo ottimale è una combinazione delle risposte di jmtd e Faheem .

Utilizzando ssh-agent da solo indica che una nuova istanza di ssh-agent deve essere creato per ogni nuovo terminale che apri. keychain una volta inizializzato chiederà la passphrase per le chiavi private e la memorizzerà. In questo modo la tua chiave privata è protetta da password ma non dovrai inserire più volte la password.

Arch wiki consiglia di inizializzare il portachiavi da /etc/profile.d/ o il tuo profilo Shell, come .bash_profile o .bashrc. Questo ha uno svantaggio in quanto inizializza il tuo portachiavi non appena apri un terminale.

Un approccio più flessibile è quello di combinare keychain con una specifica tmux sessione. Quindi, in .bash_profile:

tsess=$(tmux ls 2>&1)

if [[ "${tsess%%:*}" = "secured" ]] && 
   [[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
    # start keychain
    /usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
    . $HOME/.keychain/$HOSTNAME-sh
fi

... e quindi si tratta solo di avviare la sessione sicura tmux come e quando richiesto (avviato da un keybind):

#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"

if [[ -z "$SSH_AUTH_SOCK" ]]; then
    eval `ssh-agent`
    trap "kill $SSH_AGENT_PID" 0
fi

if [[ -z "$PID" ]]; then
    urxvtc -title "SSH" -e sh -c "${new}"
else
    urxvtc -title "SSH" -e sh -c "${old}"
fi

ssh-add

Ora, il tuo portachiavi verrà inizializzato solo una volta quando avvii quella specifica sessione tmux. Finché la sessione persiste, sarai in grado di accedere a quei tasti ssh e spingerli nei tuoi repository remoti.

6
jasonwryan

Puoi usare sshpass:

$ Sudo apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]

Devi solo aggiungere sshpass -p yourpassphrase prima di aggiungere il solito comando ssh.

0
belka