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).