¿Cómo acceder a los archivos de Linux / Ubuntu desde Windows 10 WSL?

71

Esta pregunta responde cómo acceder a los archivos de Windows desde Ubuntu Bash, pero ¿cómo puedo hacer lo contrario?

Específicamente, necesito acceder a mi clave SSH desde Windows, que se encuentra /home/mark/.ssh/id_rsadebajo de Bash.

mpen
fuente
(He sugerido cerrar la pregunta vinculada de phuclv como engañada en orden cronológico inverso ya que esta pregunta es más general y tiene respuestas mucho mejores y más actualizadas).
Bob

Respuestas:

26

PM para la línea de comandos de Windows aquí:

Actualizado en octubre de 2019 : Actualizando la respuesta a continuación para reflejar la capacidad recientemente agregada de acceder directamente a los archivos Linux de las distribuciones a través del servidor P9 recientemente integrado en Win10 1903 (y posterior) .

IMPORTANTE : Spelunking a través del sistema de archivos de Windows para acceder a los archivos de Linux ha sido y seguirá siendo incompatible y NO se recomienda. Para entender por qué, lee esta publicación

Entonces, ¿cómo se accede a los archivos de Linux utilizando las herramientas de Windows (por ejemplo, el bloc de notas, VS / VScode, etc.)? Anteriormente, no podía, pero a partir de Windows 10 1903 (¡finalmente!) Exponemos los sistemas de archivos de sus distribuciones a Windows a través de un servidor de archivos P9. ¡También hemos publicado un video en profundidad sobre cómo funciona esto ! También puede leer un resumen de esta nueva característica en esta publicación de blog

ingrese la descripción de la imagen aquí

Esperamos escuchar cómo te va con esta función. Si encuentra algún problema, presente los problemas en el repositorio de WSL GitHub aquí: https://github.com/Microsoft/wsl .

Richard Turner
fuente
Señor, ¿esta característica del servidor de archivos 9P es estable para usuarios normales? De lo contrario, puede ser mejor agregar una advertencia sobre el uso de compilaciones internas inestables. Muchos usuarios pueden no estar familiarizados con él. Sin embargo, un hecho interesante es que su respuesta contiene blogs de 2016 y 2019, ~ 3 años;)
Biswapriyo
¡Ooh, esas son noticias emocionantes! ¡Gracias por compartir!
mpen
@ biswaprio.it queda MUY claro en los pasos manuales que uno tiene que completar para unirse al programa Insider que estas versiones son literalmente gotas semanales de la próxima versión de Windows a medida que se está construyendo. Y sí, el servidor 9P será estable para los usuarios generales en la versión principal del sistema operativo en el que llega. Y sí, el hecho de que nos haya tomado tanto tiempo construir y comenzar a ofrecer una solución decente aquí debería darle una idea de lo difícil que fue para nuestro pequeño equipo priorizar e ingeniar.
Richard Turner
1
He estado probando este comando de Ubuntu con cada actualización de mi sistema desde que escuché por primera vez que se lanzó. Mi explorador siempre va a mi carpeta Documentos. Y todavía no he descubierto ningún paso para "habilitar" esta función.
Axeman
3
Situación similar a Axeman, cuando lo ejecuto explorer.exe .abre la carpeta System32. @RichardTurner ¿Dónde están los pasos manuales?
Chris
57

La ubicación se movió en la última versión a:

C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\

Vea este problema de GitHub de Microsoft / WSL # 2578

Como se menciona en el número anterior y los comentarios a continuación, no se meta con estos archivos desde el sistema operativo Windows.

https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

drew7721
fuente
1
¡Gracias! Pensé que me estaba volviendo loco tratando de seguir las viejas instrucciones, ni siquiera tenía una carpeta lxss.
Alex S
1
¿Sigue siendo cierta esta información? No puedo encontrar esa carpeta en mi Windows 10.
Bruno Finger
66
LE RECOMENDAMOS FUERTEMENTE QUE NO SE ENCUENTRE EN LAS CARPETAS DE LA RAÍZ DISTRO DESDE LAS VENTANAS. SI LO HACE, LA PÉRDIDA Y / O LA CORRUPCIÓN DE DATOS ES MUY PROBABLE: Lea esta publicación para obtener más detalles: blogs.msdn.microsoft.com/commandline/2016/11/17/…
Richard Turner
1
"Dudo que alguien intente manipular o cambiar archivos de esa manera". ¿Por qué crees que grité el consejo anterior? Escuchamos de personas varias veces a la semana que han ignorado o no leído este consejo y terminan corrompiendo los archivos en sus carpetas raíz. Diablos, hay herramientas que reemplazan sus archivos de distribución (beta) que a menudo también causan esto.
Richard Turner
1
Navegué a una carpeta que había creado a través de Ubuntu WSL en Explorer y, como resultado, rompió irreversiblemente los permisos ... así que sí, ¡no recomendaría hacer esto!
SamAndrew81
9

Lo encontré buscando en toda mi unidad C. Los archivos están aquí:

C:\Users\<username>\AppData\Local\lxss

Por ejemplo, mi clave SSH está aquí:

C:\Users\Mark\AppData\Local\lxss\home\mark\.ssh\id_rsa
mpen
fuente
2
Parece que el camino cambió desde la actualización oficial de FCU.
Briefkasten
1
@Briefkasten Acabo de actualizar a FCU y mis archivos todavía están allí. Creó un nuevo archivo en Bash solo para asegurarse. ¿Actualizaste WSL o algo así?
mpen
2
@John D El WSL se encuentra en la carpeta del paquete donde se instalará la aplicación. Para mí es: C: / Users / {username} /AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/ Cont. a github.com/Microsoft/WSL/issues/402#issuecomment-321853125
Briefkasten
9

Sí, pero no se recomienda manipular esa carpeta desde el explorador de Windows. Si desea copiar, mover, editar o borrar archivos de la carpeta lxss, debe hacerlo dentro de bash con las herramientas de línea de comandos. Solo los archivos que están en / mnt / * son realmente manipulables desde el explorador de Windows.

onoma
fuente
1
Incluso simples archivos de texto? ¿Cuáles son las trampas?
mpen
3
Cada archivo que reside en una carpeta Volfs (como / home) tiene atributos extendidos que almacenan los permisos de Linux de ese archivo. Si edita ese archivo en un editor de Windows, esos atributos se pierden y el archivo desaparecerá de bash. Puede leer más aquí: blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support
onoma
44
Parece que eso debería ser un error. Windows no debería darnos acceso a esos archivos, o darnos acceso de solo lectura, o debería interceptar las llamadas de escritura a los archivos de Linux y simplemente no modificar los atributos. Gracias por el consejo. Solo quería leer los archivos, así que espero que eso no sea un problema.
mpen
5

En powershelluso

cd ${env:appdata}\..\local\packages\canonical*\localstate\rootfs

entonces

ls

devuelve la misma lista de carpetas que

ls / 

dentro de bash en WSL.

masterxilo
fuente
4

Como se ha mencionado anteriormente por [onoma], los archivos en los directorios WSL tienen atributos que desaparecerían si uno los manipula utilizando el explorador o el editor de texto ejecutado en el sistema Windows. La solución podría ser iniciar ssh-server en WSL (puede que sea necesario reinstalar) escuchando en localhost y luego montando el sistema de archivos WSL como una unidad usando, por ejemplo, win-sshfs o simplemente puede usar el cliente Bitvise SSH para conectarse a través de ssh y manipular archivos por ventana sftp. El tema se ha discutido parcialmente aquí: ¿Cómo puedo SSH en "Bash en Ubuntu en Windows 10"?

Shamar
fuente
3

subst L: $env:LOCALAPPDATA\lxss (para PowerShell)

o subst L: %LocalAppData%\lxss(de cmd)

Esto coloca su raíz del sistema de archivos del subsistema Linux /en su unidad L:.

También puede asignar solo su directorio de inicio, o simplemente golpear %LocalAppData%\lxssen una ventana del explorador. Simplemente no intentes navegar L: \ mnt \ c o tu cerebro podría explotar.

Cheezmeister
fuente
3
Buena solución! Para Windows 10 actual es subst L: $ env: LOCALAPPDATA \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs
Andreas M. Oberheim
3

Finalmente hice una forma de abrir el explorador (y vscode) con el contexto de carpeta correcto real desde dentro de WSL: https://github.com/andymule/wslwin

Por ejemplo, después de instalar esto, en Linux (WSL) simplemente cd /home/mark/.ssh/escribiría explorery abriría el explorador de Windows en esa ubicación, sea lo que sea.

EDITAR: esta característica está siendo oficialmente compatible con WSL ahora, y ya no deberías usar mis scripts

andymule
fuente
2

Estoy en Windows 10 Creators Update. Utilizo SFTP NetDrive para montar el sistema de archivos WSL en Windows como una unidad de red.

Hay algunos puertos Windows sshFS que lograrán lo mismo.

Tendrá que iniciar el demonio ssh a través de "sudo service ssh start"

mliang2
fuente
¿Cuál es la ventaja de esto sobre ir directamente a los archivos?
mpen
Los archivos tienen metadatos adjuntos que pueden perderse al acceder directamente a las aplicaciones que no entienden los metadatos.
mlk
0
\\wsl$\Ubuntu\home\user\whatever 

En el explorador o el widget Ejecutar (Cmd + R). Funciona como un recurso compartido de red normal y es seguro manipular archivos.

También puede asignarlo a una unidad o carpeta, como cualquier otro recurso compartido de red.

Nota: Esta es una nueva característica implementada en Windows 10 build 18342

runlevel0
fuente