Cómo evitar escribir ssh-add cada vez

11

Leí y seguí algunos documentos en línea sobre cómo configurar un agente ssh para que no necesite escribir la contraseña cada vez que ssh en una máquina remota.

Sin embargo, con la ayuda de ssh-agent , todavía tengo que hacerlo ssh-addcada vez que reinicio el shell. El ssh-addentonces me pide que introduzca la contraseña para desbloquear la clave privada.

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

En lugar de escribir mi contraseña para la máquina remota, se me pide que escriba la contraseña de la clave privada. Es como salir de un purgatorio y encontrarme en un infierno después. Parece que id_rsa solo se agrega temporalmente al agente ssh en una sesión , porque cada vez que inicio sesión y escribo ssh-add -l. Yo obtengo:

The agent has no identities.

¿Puedo preguntar cómo almacenar permanentemente la clave (id_rsa) en ssh-agent? Gracias

EDITAR: esto es lo que hice con ssh-agent. Agregué el siguiente bloque a~/.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
ssgao
fuente
¿Quiere decir que debe escribir su frase de contraseña cada vez que inicie sesión o cada vez que abra una ventana de shell? Dice que ha seguido alguna documentación en línea, pero ssh-agent funciona de forma inmediata en Ubuntu, por lo que no debería haber tenido nada que hacer. ¿Qué hiciste exactamente?
Gilles 'SO- deja de ser malvado'
Tengo que escribir la frase de contraseña cada vez que ingreso en la máquina remota. PERO no es la contraseña para acceder a la máquina remota, es la contraseña para desbloquear mi clave privada (id_rsa).
ssgao
Sé que es la frase de contraseña de tu clave. Lo que estoy pidiendo es lo que hizo para configurar ssh-agent, y si se ejecuta ssh-addtiene un efecto que dura más que la ventana de shell que ha escrito en.
Gilles 'SO- estar parada mal'
El efecto dura hasta que cierre sesión en el sistema (local). Puse lo que hice ssh-agenten la publicación.
ssgao
Esto suena como un comportamiento normal: debe escribir su frase de contraseña una vez por sesión para desbloquear la clave. Si la clave desbloqueada se almacenó en algún lugar, esto anularía el propósito de tener una frase de contraseña en la clave: cualquiera que obtenga la clave desbloqueada almacenada podría usarla. ¿Esperabas algo más? ¿Desea que la clave se almacene en la memoria después de cerrar sesión para que esté disponible hasta el próximo reinicio?
Gilles 'SO- deja de ser malvado'

Respuestas:

6

He instalado llavero.

llavero sudo apt-get install

Si está ejecutando bash, debe agregar algunos comandos a su .bash_profile. Si no tiene un .bash_profile, cree uno en su carpeta de inicio. Agregue estas líneas:

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

Al comienzo de un día de trabajo, iniciaré sesión. Cuando abro una terminal, se me pedirá una vez mi frase de contraseña. Para todas las demás terminales y conexiones nuevas, no se me volverá a solicitar mi frase de contraseña.

walpha
fuente
44
¿Cómo es esto diferente de escribir ssh-adden la terminal?
ssgao
sí, pero entonces tendrá que escribir ssh-add cada vez ... al hacer esto, cortará sus 2 pasos -> eval "$ (ssh-agent)" y ssh-add
abhishek
1

Lo que está buscando es menos seguro, pero se puede lograr mediante la autenticación de clave pública sin la necesidad de ssh-agent. Una opción más segura es usar la autenticación de clave pública con una frase de contraseña mientras se desactiva la autenticación de contraseña en el servidor ssh, pero esto no es lo que solicitó. Consulte el enlace al final de esta respuesta para obtener instrucciones si decide hacerlo.

Para usar ssh sin que se le solicite ninguna frase de contraseña, debe generar su par de claves mientras deja el campo de frase de contraseña en blanco.

Para verificar si ya ha generado un par de claves, verifique los archivos id_rsa e id_rsa.pub en su directorio ~ / .ssh. Si ya están allí, puede eliminarlos o moverlos para crear un nuevo par de claves.

Tenga en cuenta que si los elimina, perderá el acceso a los servidores ssh que esté utilizando y luego las claves antiguas para autenticar si la autenticación de contraseña está desactivada en el servidor.

Para crear un nuevo par de claves, ejecute el siguiente comando:

ssh-keygen -t rsa

Acepte la ubicación predeterminada para las claves y deje la frase de contraseña en blanco.

Para dar su clave pública al servidor ssh al que desea conectarse, use el siguiente comando:

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

Después de completar estos pasos, podrá iniciar sesión en el servidor remoto sin una contraseña de la computadora que está utilizando.

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

Omegamormegil
fuente
0

Hace algún tiempo, de repente comencé a pedirme una frase de contraseña para desbloquear mi clave ssh cuando lo hacía git push. Resultó que para dejar de pedir una frase de contraseña era suficiente agregar el Agente de clave SSH (GNOME Keyring: SSH Agent) a las Aplicaciones de inicio (en mi caso, solo para marcar la casilla de verificación):

ingrese la descripción de la imagen aquí

Alexey
fuente
¿Podría por favor ampliar su respuesta con más detalles sobre cómo hacerlo y por qué resolvería el problema en cuestión? Gracias.
Byte Commander