Bagaimana cara mengakses file linux / Ubuntu dari Windows 10 WSL?


71

Pertanyaan ini menjawab bagaimana cara mengakses file Windows dari Ubuntu Bash, tetapi bagaimana saya bisa melakukan yang sebaliknya?

Secara khusus, saya perlu mengakses kunci SSH saya dari Windows yang terletak di /home/mark/.ssh/id_rsabawah Bash.



(Saya telah menyarankan untuk menutup pertanyaan terkait phuclv sebagai dupe dalam urutan kronologis terbalik karena pertanyaan ini lebih umum dan memiliki jawaban yang jauh lebih baik dan lebih baru.)
Bob

Jawaban:


26

PM untuk Windows Command-Line di sini:

Diperbarui Oktober 2019 : Memperbarui respons di bawah ini untuk mencerminkan kemampuan yang baru ditambahkan untuk secara langsung mengakses file Linux distro melalui server P9 yang baru terintegrasi di Win10 1903 (dan lebih baru) .

PENTING : Spelunking melalui sistem file Windows untuk mengakses file Linux telah dan akan terus tidak didukung dan SANGAT direkomendasikan terhadap! Untuk memahami alasannya, baca posting ini

Jadi bagaimana cara mengakses file Linux menggunakan alat Windows (mis. Notepad, VS / VScode, dll.)? Sebelumnya, Anda tidak bisa, tetapi mulai di Windows 10 1903 kami (akhirnya!) Mengekspos sistem file distro Anda ke Windows melalui server file P9. Kami juga telah menerbitkan video mendalam yang membahas cara kerjanya ! Anda juga dapat membaca ringkasan fitur baru ini di posting blog ini

masukkan deskripsi gambar di sini

Nantikan mendengar bagaimana Anda memulai fitur ini. Jika Anda menemukan masalah, silakan ajukan masalah pada repo WSL GitHub di sini: https://github.com/Microsoft/wsl .


Pak, apakah fitur server file 9P ini stabil untuk pengguna normal? Jika tidak, mungkin lebih baik menambahkan peringatan tentang penggunaan build orang dalam yang tidak stabil. Banyak pengguna mungkin tidak terbiasa dengannya. Satu fakta menarik, jawaban Anda berisi blog mulai 2016 dan 2019, ~ 3 thn;)
Biswapriyo

Ooh, itu berita yang mengasyikkan !! Terima kasih sudah berbagi!
mpen

@ biswaprio.it dibuat SANGAT jelas dalam langkah-langkah manual yang harus diselesaikan untuk bergabung dengan program Insider bahwa rilis ini secara harfiah adalah versi mingguan dari versi Windows berikutnya yang sedang dibangun. Dan ya, server 9P akan stabil untuk pengguna umum dalam rilis OS mainstream yang ada di dalamnya. Dan ya, fakta bahwa kami membutuhkan waktu selama ini untuk membangun & mulai memberikan solusi yang layak di sini harus memberi Anda beberapa gagasan tentang betapa sulitnya bagi tim kecil kami untuk memprioritaskan dan merekayasa.
Richard Turner

1
Saya telah mencoba perintah ini dari Ubuntu dengan setiap pembaruan sistem saya sejak saya pertama kali mendengar ini dirilis. Penjelajah saya selalu pergi ke folder Dokumen saya. Dan saya belum menemukan langkah apa pun untuk "mengaktifkan" fitur ini.
Axeman

3
Situasi serupa dengan Axeman, ketika saya menjalankannya explorer.exe .membuka folder System32. @RichardTurner Di mana langkah-langkah manual?
Chris

57

Lokasi sebenarnya dipindahkan dalam rilis terbaru ke:

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

Lihat masalah GitHub ini dari Microsoft / WSL # 2578

Seperti disebutkan dalam Masalah di atas dan komentar di bawah, jangan main-main dengan file-file ini dari os windows.

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


1
Terima kasih! Kupikir aku akan gila mencoba mengikuti instruksi lama, aku bahkan tidak punya folder lxss.
Alex S

1
Apakah informasi ini masih benar? Saya tidak dapat menemukan folder tersebut di Windows 10.
Bruno Finger

6
KAMI SANGAT MENYARANKAN BAHWA ANDA TIDAK BERMAIN KE FOLDER ROOT DISTRO DARI WINDOWS. JIKA ANDA MELAKUKANNYA, KEHILANGAN DATA DAN / ATAU KORUPSI SANGAT SANGAT CANTI: Silakan baca posting ini untuk perincian lebih lanjut: blogs.msdn.microsoft.com/commandline/2016/11/17/…
Richard Turner

1
"Saya ragu ada orang yang akan mencoba memanipulasi atau mengubah file seperti itu". Menurut Anda mengapa saya meneriakkan saran di atas? Kami mendengar dari orang beberapa kali dalam seminggu cool mengabaikan atau tidak membaca saran ini dan akhirnya merusak file di folder root mereka. Heck, ada alat yang mengganti file distro (beta) Anda yang sering menyebabkan ini juga.
Richard Turner

1
Saya melihat-lihat ke folder yang saya buat melalui Ubuntu WSL di Explorer dan sebagai hasilnya itu merusak izin ... jadi ya, saya tidak akan merekomendasikan melakukan ini!
SamAndrew81

9

Menemukannya dengan mencari seluruh drive C saya. File ada di sini:

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

mis., kunci SSH saya ada di sini:

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

2
Tampaknya jalan berubah sejak pembaruan resmi FCU.
Briefkasten

1
@Briefkasten Saya baru saja memperbarui ke FCU dan file saya masih ada. Membuat file baru di bawah Bash hanya untuk memastikan. Apakah Anda mengupgrade WSL atau sesuatu?
buka

2
@ John D WSL terletak di Folder Paket tempat Aplikasi akan diinstal. Bagi saya itu adalah: C: / Users / {username} /AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/ Cont. untuk github.com/Microsoft/WSL/issues/402#issuecomment-321853125
Briefkasten

9

Ya tetapi tidak disarankan untuk memanipulasi folder itu dari windows explorer. Jika Anda ingin menyalin, memindahkan, mengedit, atau menghapus file dari folder lxss Anda harus melakukannya di dalam bash dengan alat-alat baris perintah. Hanya file yang ada di / mnt / * yang benar-benar dapat dimanipulasi dari windows explorer.


1
Bahkan file teks sederhana? Apa jebakannya?
buka

3
Setiap file yang berada di folder Volfs (seperti / rumah) memiliki Atribut yang Diperpanjang yang menyimpan izin Linux dari file itu. Jika Anda mengedit file itu pada editor windows maka atribut tersebut hilang dan file akan hilang dari bash. Anda dapat membaca lebih lanjut di sini: blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support
onoma

4
Kedengarannya seperti itu seharusnya bug. Windows juga seharusnya tidak memberi kami akses ke file-file itu, atau memberi kami akses hanya-baca, atau mereka harus mencegat panggilan tulis ke file linux dan tidak mengubah atribut. Terima kasih atas tipnya. Saya hanya ingin membaca file, jadi semoga itu tidak masalah.
buka

5

Di powershell, gunakan

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

kemudian

ls

mengembalikan daftar folder yang sama dengan

ls / 

dalam bash di WSL.


4

Seperti yang telah disebutkan di atas oleh [onoma] file dalam direktori WSL memiliki atribut yang akan hilang jika seseorang memanipulasinya menggunakan explorer atau editor teks yang dijalankan di bawah sistem Windows. Solusinya bisa dengan memulai ssh-server di WSL (mungkin ada instal ulang yang diperlukan) mendengarkan di localhost dan kemudian memasang sistem file WSL sebagai drive menggunakan, misalnya, win-sshfs atau Anda dapat menggunakan klien Bitvise SSH untuk terhubung melalui ssh dan memanipulasi file dengan jendela sftp. Topik telah dibahas sebagian di sini: Bagaimana saya bisa SSH menjadi "Bash di Ubuntu pada Windows 10"?


3

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

atau subst L: %LocalAppData%\lxss(dari cmd)

Ini menempatkan sistem file-sistem Linux-subsistem /Anda di drive L : .

Anda juga dapat memetakan direktori home Anda saja, atau hanya memukul %LocalAppData%\lxssjendela explorer. Hanya saja, jangan mencoba menjelajah L: \ mnt \ c atau otak Anda mungkin meledak.


3
Solusi bagus! Untuk Windows 10 saat ini, subtitle L: $ env: LOCALAPPDATA \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs
Andreas M. Oberheim

3

Saya akhirnya membuat cara untuk membuka explorer (dan vscode) dengan konteks folder yang benar dari dalam WSL: https://github.com/andymule/wslwin

Sebagai contoh, setelah Anda menginstal ini, di linux (WSL) Anda cukup cd /home/mark/.ssh/dan mengetik explorer, dan itu akan membuka windows explorer di lokasi itu, apa pun itu.

Sunting: fitur ini secara resmi didukung di WSL sekarang, dan Anda tidak boleh lagi menggunakan skrip saya


2

Saya pada Pembaruan Pembuat Windows 10. Saya menggunakan SFTP NetDrive untuk me-mount sistem file WSL ke windows sebagai drive jaringan.

Ada beberapa port sshFS Window yang akan mencapai hal yang sama.

Anda harus memulai daemon ssh melalui "sudo service ssh start"


Apa keuntungan dari ini daripada langsung ke file?
mpen

File memiliki metadata terlampir yang mungkin hilang saat mengakses langsung dengan aplikasi yang tidak memahami metadata.
mlk

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

Di penjelajah atau widget Jalankan (Cmd + R). Bekerja seperti jaringan berbagi yang normal dan aman untuk memanipulasi file.

Anda juga dapat memetakannya ke drive atau folder, sama seperti jaringan lainnya.

Catatan: Ini adalah fitur baru yang diterapkan pada Windows 10 build 18342

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.