Як отримати доступ до файлів linux / Ubuntu з Windows 10 WSL?


71

Це питання відповідає, як отримати доступ до файлів Windows з Ubuntu Bash, але як я можу зробити навпаки?

Зокрема, мені потрібно отримати доступ до мого ключа SSH з Windows, який розташований /home/mark/.ssh/id_rsaпід Bash.



(Я запропонував закрити пов’язане питання phuclv як дуп у зворотно-хронологічному порядку, оскільки це питання є і більш загальним, і має набагато кращі та більш сучасні відповіді.)
Боб

Відповіді:


26

ПМ для командного рядка Windows тут:

Оновлено жовтень 2019 : оновлення відповіді нижче, щоб відобразити щойно додану здатність безпосередньо отримувати доступ до файлів Linux у дистрибутиві через щойно інтегрований сервер P9 в Win10 1903 (і пізніших версіях) .

ВАЖЛИВО : Зворотний зв'язок через файлову систему Windows для доступу до файлів Linux має і надалі не підтримується, і настійно рекомендується! Щоб зрозуміти чому, будь ласка, прочитайте цей пост

Тож як можна отримати доступ до файлів Linux за допомогою інструментів Windows (наприклад, блокнот, VS / VScode тощо)? Раніше ви не могли, але, починаючи з Windows 10 1903, ми (нарешті!) Виставляємо файлові системи ваших дистрибутивів Windows через сервер файлів P9. Ми також опублікували поглиблене відео, в якому обговорювали, як це працює ! Ви також можете прочитати резюме цієї нової функції в цій публікації блогу

введіть тут опис зображення

З нетерпінням чекаємо почуття того, як ви користуєтеся цією функцією. Якщо у вас виникли проблеми, подайте проблеми на репортаж WSL GitHub тут: https://github.com/Microsoft/wsl .


Сер, чи стабільна ця функція файлів 9P-файлів для звичайних користувачів? Якщо ні, то може бути краще додати попередження про використання нестабільних інсайдерських збірок. Багато користувачів можуть не знати про це. Хоча один цікавий факт, ваша відповідь містить блоги 2016 та 2019 рр., ~ 3 р .;)
Biswapriyo

О, це хвилююча новина !! Дякую, що поділився!
квітня

@ biswaprio.it робиться ДУЖЕ зрозумілим в інструкціях, які потрібно виконати, щоб приєднатися до програми Insider, що ці випуски - це буквально щотижневі краплі наступної версії Windows під час її створення. І так, сервер 9P буде стабільним для загальних користувачів в основному випуску ОС, до якого він надходить. І так, той факт, що нам знадобилося так довго, щоб створити та почати пропонувати гідне рішення, має дати вам деяке уявлення про те, наскільки складно це зробити для нашої невеликої команди та визначити їх пріоритетними.
Річард Тернер

1
Я намагаюся виконувати цю команду з Ubuntu з кожним оновленням моєї системи, оскільки я вперше почув, як це було випущено. Мій дослідник завжди переходить у папку «Документи». І я ще не з’ясував жодних кроків, щоб «включити» цю функцію.
Axeman

3
Схожа ситуація з Axeman, коли я запускаю, explorer.exe .вона відкриває папку System32. @RichardTurner Де кроки вручну?
Кріс

57

Місцезнаходження було фактично переміщено в останній версії:

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

Дивіться цю проблему GitHub від Microsoft / WSL # 2578

Як уже згадувалося у Випуску вище та коментарях нижче, не возиться з цими файлами з Windows OS.

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


1
Дякую! Думав, що я божеволію, намагаючись дотримуватися старих інструкцій, у мене навіть папки lxss не було.
Alex S

1
Чи справді ця інформація правдива? Я не можу знайти таку папку в Windows 10.
Бруно Фінгер

6
МИ РОКОГО РЕКОМЕНДУЄМО, ЩО ВИ НЕ СПРЯМУЄТЬСЯ ДО ДІСТРО-КОРОТКОВИХ ФАЙДЕРІВ З ВІКНИ. ЯКЩО ВИ РАБОТИ, Втрата
Річард Тернер

1
"Сумніваюсь, хтось намагатиметься маніпулювати або змінювати файли таким чином". Як ви думаєте, чому я кричав поради вище? Ми чуємо від людей кілька разів на тиждень круті ігнорували чи не читали цю пораду і в кінцевому підсумку пошкоджували файли в їх кореневих папках. Чортів, є інструменти, які замінюють ваші (бета) дистрибутивні файли, які також часто викликають це.
Річард Тернер

1
Я переглянув папку, яку я створив через Ubuntu WSL в Провіднику, і в результаті вона безповоротно порушила дозволи ... так що так, я б не рекомендував це робити!
SamAndrew81

9

Знайшов це шляхом пошуку всього мого диска C. Файли тут:

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

наприклад, мій ключ SSH тут:

C:\Users\Mark\AppData\Local\lxss\home\mark\.ssh\id_rsa

2
Здається, шлях змінився після офіційного оновлення FCU.
Briefkasten

1
@Briefkasten Я щойно оновив FCU, і мої файли все ще є. Створив новий файл під Bash просто для того, щоб переконатися. Ви оновили WSL чи щось таке?
1717

2
@John D WSL розташований у папці пакунків, де буде встановлено додаток. Для мене це: C: / Users / {username} /AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/ Cont. to github.com/Microsoft/WSL/isissue/402#issuecomment-321853125
Briefkasten

9

Так, але не рекомендується маніпулювати цією папкою з Windows Explorer. Якщо ви хочете скопіювати, перемістити, відредагувати або видалити файли з папки lxss, потрібно зробити це всередині bash за допомогою інструментів командного рядка. Тільки файли, які ввімкнено / mnt / *, дійсно маніпулюються з Windows Explorer.


1
Навіть прості текстові файли? Які підводні камені?
1616

3
Кожен файл, який знаходиться у папці Volfs (наприклад, / home), має розширені атрибути, які зберігають дозволи Linux для цього файлу. Якщо ви редагуєте цей файл у редакторі Windows, ці атрибути втрачаються, і файл зникне з bash. Більше можна прочитати тут: blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support
onoma

4
Схоже, це повинно бути помилкою. Windows або не повинен надавати нам доступу до цих файлів, або не надавати нам доступу лише для читання, або вони повинні перехоплювати дзвінки запису до файлів Linux і просто не змінювати атрибути. Дякую за пораду. Я хотів лише прочитати файли, тож сподіваюся, це не проблема.
1616 року

5

В powershell, використовувати

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

тоді

ls

повертає той самий список папок, що і

ls / 

в рамках баш на WSL.


4

Як вже було сказано вище, у файлах [onoma] у каталогах WSL є атрибути, яких би не було, якщо маніпулювати ним за допомогою провідника чи редактора тексту, запущеного в системі Windows. Рішенням може бути запуск ssh-сервера в WSL (може знадобитися перевстановлення) прослуховування на localhost, а потім встановлення файлової системи WSL як диска, використовуючи, наприклад, win-sshfs або ви можете просто використовувати клієнт Bitvise SSH для підключення через ssh та маніпулювати файлами за допомогою sftp window. Тема була частково обговорена тут: Як я можу SSH перейти до "Bash на Ubuntu в Windows 10"?


3

subst L: $env:LOCALAPPDATA\lxss (для повноважень)

або subst L: %LocalAppData%\lxss(від cmd)

Це ставить вашу файлову систему root-підсистеми Linux /на диску L:.

Ви також можете відобразити лише домашній каталог або просто ударити %LocalAppData%\lxssу вікно провідника. Просто не намагайтеся переглядати L: \ mnt \ c, інакше ваш мозок може вибухнути.


3
Приємне рішення! Для поточної Windows 10 це субст L: $ env: LOCALAPPDATA \ пакети \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs
Андреас М. Оберхайм

3

Я нарешті знайшов спосіб відкрити провідник (і vscode) з фактично правильним контекстом папки зсередини WSL: https://github.com/andymule/wslwin

Наприклад, після встановлення цього в linux (WSL) ви просто cd /home/mark/.ssh/введете і введете explorer, і він відкриє провідник Windows у тому місці, де б він не був.

EDIT: ця функція офіційно підтримується в WSL, і ви більше не повинні використовувати мої сценарії


2

Я на Windows 10 Creators Update. Я використовую SFTP NetDrive для монтажу файлової системи WSL у Windows як мережевий диск.

Є деякі порти Window sshFS, які дозволять досягти того ж.

Вам потрібно буде запустити ssh daemon через "sudo service ssh start"


Яка перевага цього у переході до файлів безпосередньо?
1717

У файлах додаються метадані, які можуть бути втрачені при зверненні безпосередньо до програм, які не розуміють метадані.
mlk

0
\\wsl$\Ubuntu\home\user\whatever 

У провіднику або віджеті Run (Cmd + R). Працює як звичайна мережева частка і керувати файлами безпечно.

Ви також можете зіставити його на диск або папку, як і будь-яка інша мережа.

Примітка. Це нова функція, реалізована в Windows 10 build 18342

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.