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

72

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

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

mpen
источник
(Я предложил закрыть связанный вопрос 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/

drew7721
источник
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
mpen
источник
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.

masterxilo
источник
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, иначе ваш мозг может взорваться.

Cheezmeister
источник
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 сейчас, и вы больше не должны использовать мои сценарии

andymule
источник
2

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

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

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

mliang2
источник
В чем преимущество этого по сравнению с прямым доступом к файлам?
mpen
К файлам прикреплены метаданные, которые могут быть потеряны при непосредственном доступе к приложениям, которые не понимают метаданные.
MLK
0
\\wsl$\Ubuntu\home\user\whatever 

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

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

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

runlevel0
источник