Jak uzyskać dostęp do plików linux / Ubuntu z Windows 10 WSL?

71

To pytanie odpowiada na pytanie, jak uzyskać dostęp do plików Windows z Ubuntu Bash, ale jak mogę zrobić odwrotnie?

W szczególności muszę uzyskać dostęp do mojego klucza SSH z systemu Windows, który znajduje się w /home/mark/.ssh/id_rsaBash.

mpen
źródło
(Zasugerowałem zamknięcie powiązanego pytania phuclv jako dupe w odwrotnej kolejności chronologicznej, ponieważ pytanie to jest zarówno bardziej ogólne, jak i ma znacznie lepsze i bardziej aktualne odpowiedzi).
Bob

Odpowiedzi:

26

PM dla wiersza poleceń systemu Windows tutaj:

Zaktualizowano październik 2019 r . : Aktualizacja odpowiedzi poniżej, aby odzwierciedlić nowo dodaną możliwość bezpośredniego dostępu do plików systemu Linux za pośrednictwem nowo zintegrowanego serwera P9 w Win10 1903 (i późniejszych) .

WAŻNE : Spelunkowanie w systemie plików Windows w celu uzyskania dostępu do plików Linuksa ma i będzie nieobsługiwane i MOCNIE zalecane! Aby zrozumieć, dlaczego, przeczytaj ten post

Jak więc uzyskiwać dostęp do plików systemu Linux za pomocą narzędzi systemu Windows (np. Notatnika, VS / VScode itp.)? Wcześniej nie można było tego zrobić, ale począwszy od systemu Windows 10 1903 (wreszcie!) Udostępniamy systemy plików twojej dystrybucji systemowi Windows za pośrednictwem serwera plików P9. Opublikowaliśmy także dogłębne wideo omawiające, jak to działa ! Podsumowanie tej nowej funkcji można również przeczytać w tym poście na blogu

wprowadź opis zdjęcia tutaj

Czekamy na informacje na temat korzystania z tej funkcji. Jeśli znajdziesz jakieś problemy, zgłoś problemy na repozytorium GitHub WSL tutaj: https://github.com/Microsoft/wsl .

Richard Turner
źródło
Sir, czy ta funkcja serwera plików 9P jest stabilna dla zwykłych użytkowników? Jeśli nie, może być lepiej dodać ostrzeżenie o używaniu niestabilnych kompilacji poufnych informacji. Wielu użytkowników może się z tym nie zaznajomić. Ciekawy fakt: Twoja odpowiedź zawiera blogi z 2016 i 2019 r., ~ 3 lata;)
Biswapriyo
Och, to ekscytujące wieści !! Dziękuję za udostępnienie!
mpen
@ biswaprio.it jest BARDZO jasne w ręcznych krokach, jakie należy wykonać, aby dołączyć do programu Insider, że te wydania są dosłownie cotygodniowymi zrzutami następnej wersji systemu Windows w trakcie tworzenia. I tak, serwer 9P będzie stabilny dla zwykłych użytkowników w głównym wydaniu systemu operacyjnego, w którym się pojawi. I tak, fakt, że tyle czasu zajęło nam zbudowanie i rozpoczęcie dostarczania tutaj przyzwoitego rozwiązania, powinien dać ci pojęcie o tym, jak trudne jest dla naszego małego zespołu ustalanie priorytetów i inżynieria.
Richard Turner
1
Próbowałem tego polecenia z Ubuntu przy każdej aktualizacji mojego systemu, odkąd po raz pierwszy usłyszałem, że zostało wydane. Mój eksplorator zawsze przechodzi do mojego folderu Dokumenty. I jeszcze nie znalazłem żadnych kroków, aby „włączyć” tę funkcję.
Axeman
3
Podobna sytuacja do Axemana, kiedy uruchamiam explorer.exe ., otwiera folder System32. @RichardTurner Gdzie są kroki ręczne?
Chris
57

Lokalizacja została faktycznie przeniesiona w najnowszej wersji do:

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

Zobacz ten problem GitHub z Microsoft / WSL # 2578

Jak wspomniano w powyższym numerze i komentarzach poniżej, nie zadzieraj z tymi plikami z systemu operacyjnego Windows.

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

drew7721
źródło
1
Dzięki! Myślałem, że wariuję, próbując postępować zgodnie ze starymi instrukcjami, nawet nie miałem folderu lxss.
Alex S
1
Czy te informacje są nadal prawdziwe? Nie mogę znaleźć takiego folderu w moim systemie Windows 10.
Bruno Finger
6
NIEZWYKLE POLECAMY, ABY NIE SPRUNUNOWAŁO SIĘ DO FOLDERÓW DOTRO ROOT Z WINDOWS. JEŚLI ZROBIĆ, UTRATA DANYCH I / LUB KORUPCJA JEST WYSOKIE PRAWDOPODOBNIE: Przeczytaj ten post, aby uzyskać więcej informacji: blogs.msdn.microsoft.com/commandline/2016/11/17/…
Richard Turner
1
„Wątpię, aby ktokolwiek próbował manipulować lub zmieniać pliki w ten sposób”. Jak myślisz, dlaczego wykrzyczałem powyższą radę? Słyszymy od ludzi wiele razy w tygodniu, że super zignorowali lub nie przeczytali tej porady i w efekcie uszkodzili pliki w swoich folderach głównych. Do cholery, istnieją narzędzia, które zastępują pliki dystrybucji (beta), które często to powodują.
Richard Turner
1
Przejrzałem folder, który utworzyłem za pośrednictwem Ubuntu WSL w Eksploratorze, w wyniku czego nieodwracalnie złamał uprawnienia ... więc tak, nie poleciłbym tego robić!
SamAndrew81
9

Znalazłem go, przeszukując cały mój dysk C. Pliki są tutaj:

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

np. mój klucz SSH jest tutaj:

C:\Users\Mark\AppData\Local\lxss\home\mark\.ssh\id_rsa
mpen
źródło
2
Wygląda na to, że ścieżka zmieniła się od czasu oficjalnej aktualizacji FCU.
Briefkasten
1
@Briefkasten Właśnie zaktualizowałem do FCU i moje pliki nadal tam są. Utworzono nowy plik w Bash, aby się upewnić. Czy zaktualizowałeś WSL czy coś takiego?
mpen
2
@John D WSL znajduje się w folderze pakietów, w którym zostanie zainstalowana aplikacja. Dla mnie jest to: C: / Users / {nazwa użytkownika} /AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/ Cont. na github.com/Microsoft/WSL/issues/402#issuecomment-321853125
Briefkasten
9

Tak, ale nie zaleca się manipulowania tym folderem z Eksploratora Windows. Jeśli chcesz kopiować, przenosić, edytować lub usuwać pliki z folderu lxss, musisz to zrobić w bash za pomocą narzędzi wiersza poleceń. Tylko pliki znajdujące się w katalogu / mnt / * są w rzeczywistości obsługiwane przez Eksploratora Windows.

onoma
źródło
1
Nawet proste pliki tekstowe? Jakie są pułapki?
mpen
3
Każdy plik znajdujący się w folderze Volfs (jak / home) ma atrybuty rozszerzone, które przechowują uprawnienia tego pliku do systemu Linux. Jeśli edytujesz ten plik w edytorze systemu Windows, atrybuty zostaną utracone, a plik zniknie z bash. Możesz przeczytać więcej tutaj: blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support
onoma
4
Wygląda na to, że to powinien być błąd. Windows albo nie powinien dać nam dostępu do tych plików, ani dać dostępu tylko do odczytu, albo powinien przechwycić wywołania zapisu do plików linux i po prostu nie modyfikować atrybutów. Dzięki za wskazówkę. Chciałem tylko czytać pliki, więc mam nadzieję, że to nie problem.
mpen
5

W powershell, użyj

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

następnie

ls

zwraca tę samą listę folderów co

ls / 

w ramach bash na WSL.

masterxilo
źródło
4

Jak wspomniano powyżej, pliki [onoma] w katalogach WSL mają atrybuty, które zniknęłyby, gdyby manipulować nimi za pomocą eksploratora lub edytora tekstu uruchomionego w systemie Windows. Rozwiązaniem może być uruchomienie ssh-server w WSL (może być konieczna ponowna instalacja) nasłuchiwanie na localhost, a następnie zamontowanie systemu plików WSL jako napędu za pomocą, na przykład, win-sshfs lub po prostu użyć klienta Bitvise SSH do połączenia przez ssh i manipuluj plikami za pomocą okna sftp. Temat został częściowo omówiony tutaj: Jak mogę włączyć SSH do „Bash na Ubuntu na Windows 10”?

Shamar
źródło
3

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

lub subst L: %LocalAppData%\lxss(z cmd)

Spowoduje to umieszczenie systemu plików root-podsystemu Linux /na dysku L :.

Możesz także zmapować tylko katalog domowy lub po prostu walnąć %LocalAppData%\lxssw okno eksploratora. Po prostu nie próbuj przeglądać L: \ mnt \ c, bo twój mózg może eksplodować.

Cheezmeister
źródło
3
Fajne rozwiązanie! W obecnym systemie Windows 10 jest to L: $ env: LOCALAPPDATA \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs
Andreas M. Oberheim
3

W końcu udało mi się otworzyć eksploratora (i vscode) z właściwym poprawnym kontekstem folderu z poziomu WSL: https://github.com/andymule/wslwin

Na przykład, po zainstalowaniu tego, w Linuksie (WSL) wystarczy cd /home/mark/.ssh/i napiszesz explorer, a otworzy to Eksploratora Windows w tym miejscu, cokolwiek to jest.

EDYCJA: ta funkcja jest teraz oficjalnie obsługiwana w WSL i nie powinieneś już używać moich skryptów

andymule
źródło
2

Im na Windows 10 Creators Update. Używam SFTP NetDrive do montowania systemu plików WSL w systemie Windows jako dysku sieciowego.

Niektóre porty sshFS systemu Windows osiągają to samo.

Musisz uruchomić demona ssh poprzez „sudo service ssh start”

mliang2
źródło
Jaka jest tego zaleta w porównaniu z bezpośrednim przejściem do plików?
mpen
Do plików dołączone są metadane, które mogą zostać utracone podczas bezpośredniego dostępu do aplikacji, które nie rozumieją metadanych.
mlk
0
\\wsl$\Ubuntu\home\user\whatever 

W eksploratorze lub w widżecie Uruchom (Cmd + R). Działa jak zwykły udział sieciowy i można bezpiecznie manipulować plikami.

Możesz także zamapować go na dysk lub folder, tak jak każdy inny udział sieciowy.

Uwaga: jest to nowa funkcja zaimplementowana w kompilacji systemu Windows 10 w wersji 18342

runlevel0
źródło