
Estoy ejecutando Ubuntu 16.04 dentro de un shell del Subsistema de Windows para Linux (WSL) en Windows 10. Desde una terminal puedo iniciar ssh-agent y usarlo muchas veces durante la vida útil de esa terminal. Puedo ver el agente ssh ejecutándose desde ps y también desde el administrador de tareas de Windows 10.
Sin embargo, si inicio un segundo terminal bash WSL desde el menú de inicio, no reconoce el agente ssh. Curiosamente, si inicio una segunda terminal desde la línea de comando de Windows, funciona. Una posible solución sería abrir nuevas ventanas bash desde la existente, pero tampoco sé cómo hacerlo.
Hay alguna solución para esto?
Respuesta1
Puede modificar su .bashrc para encontrar un agente ssh en ejecución existente.
Yo uso algo basado en elesencia
# ssh-agent configuration
if [ -z "$(pgrep ssh-agent)" ]; then
rm -rf /tmp/ssh-*
eval $(ssh-agent -s) > /dev/null
else
export SSH_AGENT_PID=$(pgrep ssh-agent)
export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi
# optional... potentially annoying
#if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
# ssh-add
#fi
Respuesta2
Simplemente detecté esto debido a otra respuesta nueva, pero la mayoría de las respuestas aquí sugieren algún tipo de ajuste del script de inicio (por ejemplo ~/.bashrc
). En lugar de reinventar la rueda, sugeriríakeychain
.
Después de la instalación (disponible en la mayoría de los repositorios de distribución, por ejemplo sudo apt install keychain
), simplemente agregue:
eval $(keychain --eval --agents ssh id_rsa)
... para usted ~/.bashrc
. Esto configurará correctamente sus variables SSH_AGENT_PID
y SSH_AUTH_SOCK
para la sesión actual para que apunte a la existente ssh-agent
o iniciará una nueva si es necesario. De esta manera, solo ssh-agent
se utiliza un recurso compartido para todas las sesiones WSL/terminal abiertas.
Un dato divertido: keychain
fue escrito originalmente por Daniel Robbins, quien también fundó Gentoo Linux.
Respuesta3
Quizás no: suena como si ssh-agent
se estuviera ejecutando de la forma habitual, donde es el proceso principal de su shell. Esa otra ventana tiene su propia jerarquía de proceso padre/hijo que no se relaciona con la ventana que está utilizando.
una forma de trabajarconesta característica ssh-agent
es ejecutar screen
(o tmux
) dentro de la ventana donde inició el agente. Esas ventanas screen/tmux también son hijas del ssh-agent
proceso y pueden hablar con él sin problemas.
Respuesta4
Ahora lo hay. Instale la última versión deOpenSSH para ventanasy luego obtener elagente-ssh-wslayudante. Siga las instrucciones y obtendrá fácilmente una forma funcional de compartir credenciales en WSL y Windows. ¡Funciona a las mil maravillas!