Tengo Windows 10 con Git instalado. Este Git usa mi C:/Users/MyName
directorio como el directorio INICIO y el /.ssh/
directorio interno, de manera apropiada para obtener mis claves SSH privadas.
Acabo de habilitar y configurar "Bash en Ubuntu en Windows" (¡qué bocado!) E instalé Git allí también. Me gustaría que ambos Gits utilicen el mismo conjunto de claves de modo que no importa en qué entorno trabajo en esta máquina, mis confirmaciones siempre vendrán de mí.
El problema es que el directorio HOME en bash es diferente ( /home/MyName
) y, por lo tanto, no ve las teclas ubicadas en el ahora distante ../../mnt/c/Users/MyName/.ssh
. Pensé que sería un ganador cambiando la variable de entorno HOME usando
export HOME=/c/mnt/Users/MyName
Esto cambió el directorio HOME con éxito, pero bash git todavía no ve las claves contenidas en el ./.ssh
directorio.
No estoy seguro de si esto es A) porque bash git espera claves en un formato de archivo diferente. (las actuales son id_rsa
y id_rsa.pub
) B) bash git está ignorando la variable HOME modificada? O tal vez ambos.
Tampoco estoy seguro de C) si cambiar arbitrariamente la variable HOME como esta es una buena idea en general, ¿otros programas que podrían hacer referencia a ella?
.ssh
ya existe en/home/MyName
... ¿pueden uno archivos de enlace simbólico? tal que haríaln -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa
? (¡nuevo en simular también!).ssh
directorio.Respuestas:
Entonces, como comentó Telastyn, agregué enlaces simbólicos en WSL
~/.ssh/
a id_rsa e id_rsa.pub usando:Usando la misma técnica para vincular en su lugar el directorio de enlaces simbólicos sugerido por tripleee, tuve problemas hasta que vi que las barras diagonales finales que utilicé en el
ln
comando (dejado de usar la tecla de tabulación para que bash complete el nombre del directorio) fueron un problema. Por lo tanto, en lugar de hacer lo anterior, podría hacer mejor:El archivo conocido_hosts difiere ligeramente entre mi uso de él (git en powershell usando el agente ssh) en Windows y el uso de SSH en WSL, por lo que el nombre de host y la IP no están codificados en la versión de Windows. De acuerdo con la página del manual para ssh-config, hay un indicador disponible para deshabilitar este hash, lo que entendí que SSH entendería el archivo sin el hashing que ha funcionado hasta ahora.
Este último método significa que los detalles utilizados para SSH utilizados entre los dos entornos diferentes son exactamente los mismos.
¡Gracias a Matěj Kříž por señalar un pequeño pero vital personaje perdido!
fuente
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
agregar "~". No?private keys
frombash on windows
if ones haces link
entre los directorios. Si lo hace, sessh agent
quejará de los malos permisos en los archivos de clave privada. Dado que los archivos montados desde la ventana, su permiso no se puede cambiar.Según los permisos de la nueva compilación "Insider Build 17063" para archivos, ahora funciona de manera diferente. En resumen, debes hacer:
Esto hará que los permisos para su carpeta ssh funcionen según lo necesite. Luego procedió como OP sugiere en su respuesta.
Enlaces relevantes:
https://github.com/Microsoft/WSL/issues/3181 https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
EDITAR
Volví a esta pregunta porque descubrí que esto es solo una solución temporal (sí, soy estúpido). Cada vez que reinicie (cierre la sesión) de su WSL, debe emitir estos comandos nuevamente.
Entonces, la solución que me funciona ahora es editar (crear) el archivo de configuración
/etc/wsl.conf
en mi wsl ubuntu, y ponerlo en el siguiente, luego reiniciar para hacer monturas nuevamente:Por qué agrego metadatos:
¿Por qué configurar uid y gid?
Enlaces relevantes:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/ https: / /blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
fuente