desarrollo-web-br-bd.com

Cómo evitar que se me pida una frase de contraseña cada vez que presiono Bitbucket

Configuré mis cosas ssh con la ayuda de esta guía , y solía funcionar bien (podría ejecutar hg Push sin que se le pida una frase de contraseña). Lo que podría haber sucedido entre entonces y ahora, teniendo en cuenta que todavía estoy usando el mismo directorio de inicio.

$ 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

Necesita usar un agente ssh. Respuesta corta: prueba

$ ssh-add

antes de empujar Proporcione su frase de contraseña cuando se le solicite.

Si aún no está ejecutando un agente ssh, recibirá el siguiente mensaje:

Could not open a connection to your authentication agent.

En esa situación, puede iniciar uno y configurar su entorno de esta manera

eval $(ssh-agent)

Luego repite el ssh-add comando.

Vale la pena echar un vistazo a página de manual del agente ssh .

363
jmtd

Una forma de resolver esto es con ssh-agent y ssh-add:

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

Después de esto, la frase de contraseña se guarda para la sesión actual. y no me volverán a preguntar.

48
stefano

Yo uso Keychain para administrar las claves ssh. También está disponible en Debian y, presumiblemente, Ubuntu con

apt-get install keychain

Aquí está el página del paquete de llavero Debian . Como puede ver, el proyecto no es muy activo, pero funciona para mí. También comenté un poco sobre esto en otra respuesta aquí

29
Faheem Mitha

Cree (o edite si existe) el siguiente archivo ~/.ssh/config:

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

Por conveniencia, el método óptimo es una combinación de las respuestas de jmtd y Faheem .

Utilizando ssh-agent solo significa que una nueva instancia de ssh-agent debe crearse para cada nueva terminal que abra. keychain cuando se inicializa pedirá la frase de contraseña para la (s) clave (s) privada (s) y la almacenará. De esa manera, su clave privada está protegida con contraseña, pero no tendrá que ingresarla una y otra vez.

El Arch wiki recomienda inicializar el llavero desde /etc/profile.d/ o su perfil de Shell, como .bash_profile o .bashrc. Esto tiene la desventaja de que inicializa su llavero tan pronto como abre un terminal.

Un enfoque más flexible es combinar keychain con una sesión específica tmux. Entonces, en .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

... y luego es solo un caso de iniciar la sesión segura tmux cuando sea necesario (lanzado desde un teclado):

#!/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

Ahora, su llavero solo se inicializará una vez cuando inicie esa sesión específica de tmux. Mientras esa sesión persista, podrá acceder a esas teclas ssh y Push a sus repositorios remotos.

6
jasonwryan

Puede usar sshpass:

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

Solo necesita agregar sshpass -p yourpassphrase antes de agregar su comando habitual ssh.

0
belka