Puncte:0

Montați folderul de la WSL la Ubuntu prin SSH cu SSHFS

drapel my

Încerc să montez un folder situat în WSL pe mașina mea Ubuntu 20.4 folosind SSHFS, dar primesc întotdeauna mesajul că nu există „Nu există un astfel de fișier sau director”. Cum pot face asta?

Modul evident în care am încercat să montez directorul a fost următorul:

sshfs user@remotehost:"\wsl$\Ubuntu-20.04" /home/user/Remote/
Will avatar
drapel id
Poți să-ți editezi postarea pentru a spune cum încerci să o montezi, te rog?
Adam avatar
drapel my
@Voi edita întrebarea mea. Vă mulțumesc pentru sugestie.
Puncte:0
drapel vn

Răspuns scurt:

Utilizați gazda Windows ca o ssh jumphost pentru a accesa WSL.

Mai multe detalii:

Există câteva capcane când încercați să accesați WSL (în special WSL2) prin ssh:

În primul rând, este posibil să fi întâlnit faptul că WSL2 rulează într-un mediu virtualizat, cu un vNIC NAT. Aceasta înseamnă că serviciile care rulează în WSL2 nu sunt direct accesibile de pe alte mașini din rețea.

WSL oferă redirecționare localhost, care permite accesul de la gazda Windows însăși la serviciile care rulează în WSL2 (prin localhost:portnumber). Dar acest lucru nu se extinde la alte mașini din rețea.

Puteți vedea un thread complet Github despre asta Aici cu link-ul fiind direct la comentariul că acesta de obicei recomandat pentru a rezolva acest lucru.

Implica:

  • Stabilirea regulilor de firewall
  • Redirecționare porturi din Windows către interfața de rețea virtuală WSL2
  • Cea mai mare provocare aici este că adresa vNIC se schimbă de fiecare dată când WSL repornește. Deci, scriptul trebuie să ștergă vechile reguli și să le recreeze la fiecare repornire.

Dar, cu editarea dvs. actualizată, se pare că încercați ceva ușor diferit, unde se pare că puteți încerca să accesați pseudo-partajare WSL prin Windows, poate prin ssh pe gazda Windows în sine.

Din păcate, nici acest lucru nu va funcționa pentru că \wsl$\... este el însuși un sistem de fișiere de rețea (folosind protocolul 9P). Asta înseamnă că chiar nu exista pe gazda Windows în sine atunci când este accesat prin ssh.

Soluția mea preferată cu ssh (și astfel sshfs) este de a folosi a ssh jumphost. Acest lucru rezolvă problemele „schimbarea adresei vNIC” și nu necesită să rulați un script la fiecare pornire Windows.

Pentru a configura acest lucru:

  • Instalați serverul Windows OpenSSH pe gazda Windows. Folosesc portul implicit 22 pentru ssh „gazdă”, dar nu trebuie neapărat.
  • Instalați și configurați SSH în instanța dvs. WSL. Va trebui să utilizați un alt număr de port aici decât pentru gazda Windows. De dragul acestui exemplu, vom folosi port 8022. Editează-ți /etc/ssh/sshd_config pentru a schimba portul.
  • Opțional, dar recomandat, configurați atât instanțele Windows OpenSSH, cât și cele WSL cu cheia publică ../ssh/authorized_keys (pe Windows OpenSSH, acesta este sub dvs %userprofile%/.ssh director. În Linux/WSL, desigur, este în ~/.ssh.

Acum, deoarece (așa cum am menționat mai devreme) gazda Windows poate accesa instanțele WSL2 gazdă locală, puteți utiliza Windows SSH ca un jumphost la sesiunile WSL2 SSH.

Asumand:

  • Computerul tău Windows este numit windowshost (înlocuiește cum se numește cu adevărat)
  • Aveți Windows OpenSSH pe portul 22
  • Aveți serverul WSL SSH pe portul 8022

Apoi vă puteți monta sistemul WSL folosind:

sshfs -o ssh_command='ssh -J windowshost' -p 8022 localhost:/ <mountpoint>

Instanța WSL este „localhost” deoarece aceasta este adresa din perspectiva jumphost (gazdă Windows).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.