Tengo una clave privada configurada para mi cuenta de github, la frase de contraseña a la que, creo, está almacenada en el llavero de OS X. Ciertamente no tengo que escribirlo cuando abro una ventana de terminal y entro ssh [email protected]
.
Sin embargo, cuando ejecuto bash sobre una sesión ssh, o localmente dentro de una sesión tmux, tengo que escribir la frase de contraseña cada vez que intento ssh a github.
Esta pregunta sugiere que existe un problema similar con la pantalla, pero realmente no entiendo el problema lo suficientemente bien como para solucionarlo en tmux. También existe esta página que incluye una solución bastante complicada, pero para zsh.
EDITAR :
En respuesta a la respuesta de @ Mikel , desde un terminal local obtengo el siguiente resultado:
[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~]
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Mientras que sobre ssh o en tmux obtengo:
[~]
$ echo $SSH_AUTH_SOCK
[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found
echo $SSH_AGENT_PID
no devuelve nada desde el shell desde el que lo ejecuto.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
desde ssh / tmux. Lo intentaré localmente esta noche, si es necesario.Respuestas:
Mi colega creó algunas funciones bash para ayudar a encontrar un agente en vivo: https://github.com/wwalker/ssh-find-agent
Lo usa principalmente para conectarse entre sistemas (computadora portátil a escritorio, etc.), pero lo uso con mayor frecuencia para sesiones tmux locales en las que cierra sesión / inicia sesión desde su administrador de ventanas (OS X para mí).
Uso
Descargar ssh-find-agent.bash (
git clone git://github.com/wwalker/ssh-find-agent.git
funciona).Agregue lo siguiente a ~ / .bashrc:
Luego puede escribir lo siguiente para establecer SSH_AUTH_SOCK en su shell actual:
fuente
Una solución elegante, recogida de dagit.o :
Crear
~/.ssh/rc
añadir
~/.tmux.conf
fuente
En su
.tmux.conf
archivo de configuración, agregue esta línea:Esto hace que estas variables de entorno se copien de su shell principal a cualquier shells abiertos dentro de tmux, lo que permite que ssh-agent funcione correctamente dentro de esos tmux shells.
fuente
update-environment
. El OP debe verificar suupdate-environment
valor y posiblemente actualizarse donde ya se esté cambiando.update-environment
está configurado correctamente Sin embargo, el problema aún ocurre.tmux
servidor presente, desafiando el propósito de volver a conectar ... ¿Tal vez hay un interruptor de línea de comando para volver a actualizar esas variables?Me sucedió que los paneles creados al conectarse a través de ssh desde OS X comenzaron a preguntar mi frase de contraseña después de un tiempo de trabajo. Encontré una manera de arreglar eso robando esta línea de http://santini.di.unimi.it/extras/ph/my-tmux-setup.html
Simplemente ejecútalo desde el panel que se queja.
fuente
No estoy seguro de si está usando bash u otro shell, pero la configuración tmux de este tipo parece que funcionaría para bash. Personalmente, estoy usando zsh con oh-my-zsh , y descubrí que ssh-agent comenzó a trabajar en tmux después de agregar
a mi archivo .zshrc y volví a cargar la configuración en mis sesiones zsh en ejecución. También encontré la solución orientada a zsh de este tipo , pero resultó ser innecesaria para mí.
fuente
Que hace:
¿impresión?
Ejecútelo en su terminal normal, luego ejecútelo dentro de su
tmux
sesión. Deberían imprimir lo mismo.fuente
ssh
es fácil. Active el reenvío de agente. La forma más fácil de hacerlo es ejecutarlo enssh -A
lugar de hacerlossh
. Use un alias para no tener que escribirlo todo el tiempo o ponerlo en su.SSH/config
.Hay muchas soluciones, pero la más simple se encuentra en la respuesta de Hans Ginzel, del 8 de enero de 2016, a una pregunta relacionada de StackOverflow del 27 de enero de 2014 . Simplemente agregue lo siguiente a su shell
~/.profile
o similar:No es necesario definir funciones de varias líneas o crear nuevos archivos temporales. Si no desea un alias
ssh
, simplemente cámbielofixssh
y elimínelo&& ssh
al final, y ejecútelofixssh
siempre que intente ejecutarlossh
desde una sesión tmux reenganchada.La respuesta de Hans Ginzel sugiere que se requiere una 'versión más nueva' de tmux para ejecutarse
show-env -s
. Esto funciona para mí en tmux 2.7, y en mi lectura del registro de cambios ,-s
se agregó el 3 de junio de 2008 justo antes del lanzamiento de tmux 0.3. tmux 2.3 (29 de septiembre de 2016) está en Debian estable.fuente