Как получить доступ к файлам Linux / Ubuntu из Windows 10 WSL?


72

Этот вопрос отвечает на вопрос, как получить доступ к файлам Windows из Ubuntu Bash, но как я могу сделать обратное?

В частности, мне нужно получить доступ к своему ключу SSH из Windows, который находится /home/mark/.ssh/id_rsaпод Bash.



(Я предложил закрыть связанный вопрос phuclv как дублирующий в обратном хронологическом порядке, так как этот вопрос является и более общим, и имеет гораздо лучшие и более актуальные ответы.)
Боб

Ответы:


26

PM для командной строки Windows здесь:

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

ВАЖНО : Spelkking через файловую систему Windows для доступа к файлам Linux имеет и будет оставаться неподдерживаемым и настоятельно рекомендуется против! Чтобы понять почему, пожалуйста, прочитайте этот пост

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

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

С нетерпением ждем, как вы справляетесь с этой функцией. Если вы обнаружите какие-либо проблемы, пожалуйста, сообщите о них в репозитории WSL GitHub здесь: https://github.com/Microsoft/wsl .


Сэр, эта функция файлового сервера 9P стабильна для обычных пользователей? Если нет, то может быть лучше добавить предупреждение об использовании нестабильных инсайдерских сборок. Многие пользователи могут не знакомы с ним. Один интересный факт, хотя, ваш ответ содержит блоги с 2016 и 2019, ~ 3 года;)
Biswapriyo

Ох, это захватывающая новость! Спасибо, что поделились!
mpen

@ biswaprio.it ОЧЕНЬ ясно из шагов, которые нужно выполнить, чтобы присоединиться к программе Insider, что эти выпуски буквально еженедельно сбрасывают следующую версию Windows по мере ее создания. И да, сервер 9P будет стабильным для обычных пользователей в основной версии ОС, в которую он поступает. И да, тот факт, что нам потребовалось так много времени, чтобы создать и начать предлагать достойное решение, должен дать вам представление о том, насколько сложно для нашей небольшой команды расставить приоритеты и разработать.
Ричард Тернер

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

3
Аналогичная ситуация с Axeman, когда я запускаю, explorer.exe .он открывает папку System32. @RichardTurner Где ручные шаги?
Крис

58

Местоположение было фактически перемещено в последнем выпуске:

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.
Алекс С

1
Эта информация все еще правдива? Я не могу найти такую ​​папку на моем Windows 10.
Bruno Finger

6
МЫ НАСТОЯТЕЛЬНО РЕКОМЕНДУЕМ, ЧТО ВЫ НЕ ПРОПУСКАЕТЕ В ПАПКИ КОРНЕВОГО КОРПУСА DISTRO ИЗ WINDOWS. ЕСЛИ ВЫ ДЕЛАЕТЕ, ПОТЕРЯ ДАННЫХ И / ИЛИ КОРРУПЦИЯ ВЫГОДНО: Пожалуйста, прочитайте этот пост для получения более подробной информации: blogs.msdn.microsoft.com/commandline/2016/11/17/…
Ричард Тернер

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 или что-то?
Mpen

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

9

Да, но не рекомендуется манипулировать этой папкой из проводника Windows. Если вы хотите копировать, перемещать, редактировать или удалять файлы из папки lxss, вам нужно сделать это в bash с помощью инструментов командной строки. Только файлы, которые находятся в / mnt / *, действительно доступны для управления из проводника Windows.


1
Даже простые текстовые файлы? Какие подводные камни?
mpen

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

4
Похоже, это должно быть ошибкой. Windows либо не должна предоставлять нам доступ к этим файлам, либо предоставлять доступ только для чтения, либо они должны перехватывать вызовы записи в файлы linux и просто не изменять атрибуты. Спасибо за совет. Я только хотел прочитать файлы, так что, надеюсь, это не проблема.
mpen

5

В powershellиспользовании

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

тогда

ls

возвращает тот же список папок, что и

ls / 

в Bash на WSL.


4

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


3

subst L: $env:LOCALAPPDATA\lxss (для powershell)

или subst L: %LocalAppData%\lxsscmd)

Это поместит корневую файловую систему вашей Linux-подсистемы /на ваш диск L : .

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


3
Отличное решение! Для текущей Windows 10 это подстановка L: $ env: LOCALAPPDATA \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs
Андреас М. Оберхайм,

3

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

Например, после установки этого, в Linux (WSL) вы бы просто cd /home/mark/.ssh/и тип explorer, и открыть бы Windows Explorer , в том месте, что это такое.

РЕДАКТИРОВАТЬ: эта функция официально поддерживается в WSL сейчас, и вы больше не должны использовать мои сценарии


2

Я на Windows 10 Creators Обновление. Я использую SFTP NetDrive для монтирования файловой системы WSL в Windows как сетевой диск.

Есть некоторые порты Windows sshFS, которые добиваются того же.

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


В чем преимущество этого по сравнению с прямым доступом к файлам?
mpen

К файлам прикреплены метаданные, которые могут быть потеряны при непосредственном доступе к приложениям, которые не понимают метаданные.
MLK

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

В проводнике или виджете Выполнить (Cmd + R). Работает как обычный сетевой ресурс, и манипулировать файлами безопасно.

Вы также можете сопоставить его с диском или папкой, как и любой другой сетевой ресурс.

Примечание. Это новая функция, реализованная в сборке Windows 10 18342.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.