GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire SSH in WSL2 su Windows 10 da un computer esterno

Bel post sul blog eh? Bel titolo, vero?

NON ESEGUIRE LE ISTRUZIONI IN QUESTO POST

fino a quando non avrai letto il SEGUITO IN MODO SEMPLICE come eseguire SSH in Bash e WSL2 su Windows 10 da un computer esterno e hai preso la decisione giusta per TE!

OpenSSH è disponibile in Windows da 5 anni ormai, quindi è fantastico. Puoi fare un sacco di cose!

  • Come utilizzare OpenSSH integrato di Windows 10 per eseguire automaticamente l'SSH in una macchina Linux remota
  • Come eseguire SSH in una macchina Windows 10 da Linux O Windows O ovunque

Ma spesso la gente vuole SSH non nella loro macchina Windows 10, ma piuttosto, in WSL2 in esecuzione all'interno/dietro la loro macchina Windows 10. Sebbene WSL2 possa inoltrare le porte dall'interno verso l'esterno (ad esempio, localhost:8000 all'interno di un'istanza WSL2 resa disponibile dal computer Windows 10 locale), se desideri creare un percorso a una porta WSL2 completamente dall'esterno di un computer, deve essere molto più esplicito.

Installa OpenSSH-Server in WSL

Innanzitutto, installa il server OpenSSH all'interno della tua distribuzione Linux:

scott@IRONHEART:~$ sudo apt install openssh-server
[sudo] password for scott:
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssh-server is already the newest version (1:7.6p1-4ubuntu0.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Decidi il tuo numero di porta SSH

Successivamente, in WSL2, modifica /etc/ssh/sshd_config e decommenta la riga Port.

L'ho modificato con sudo nano /etc/ssh/sshd_config , nessuna vergogna!

SSH di solito è 22, ma mi piace usare qualcosa come 2222 quindi è meno ovvio ma comunque facile da ricordare ED è diverso dal 22 della tua macchina Windows. Nota che gli ho detto di ascoltare su 0.0.0.0, quindi, qualsiasi adattatore. Puoi anche impostare PasswordAuthentication su "no" se desideri utilizzare le chiavi SSH anziché le password per l'autenticazione. Impostalo su "sì" se sai cosa stai facendo e non sai come usare le chiavi ssh.

/etc/ssh/sshd_config

...STUFF ABOVE THIS...
Port 2222
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::

...STUFF BELOW THIS...

Da WSL2 ottieni il tuo indirizzo IP usando "ifconfig". Il mio è 172.23.129.80, il tuo sarà probabilmente 172.SOMETHINGELSE e cambierà quando WSL2 si avvia a freddo .

Potresti voler assicurarti che sia in esecuzione, considerando che WSL2 non ha systemd.

service ssh start

Inoltra porte in WSL2

Ora, da un prompt di Windows dell'amministratore - che può essere cmd.exe o powershell.exe, non importa, usa la shell di rete "netsh" per aggiungere una regola portproxy. Di nuovo, cambia indirizzo di connessione con il TUO indirizzo IP WSL2, che è un indirizzo interno della tua macchina.

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.23.129.80 connectport=2222

Apri il firewall

Quindi, dallo stesso prompt di Windows dell'amministratore, apri una porta del firewall in entrata. Puoi farlo dalle Impostazioni avanzate del firewall, ma ancora più semplice puoi usare di nuovo netsh!

netsh advfirewall firewall add rule name=”Open Port 2222 for WSL2” dir=in action=allow protocol=TCP localport=2222

Puoi elencare tutte le tue regole portproxy in questo modo se sei preoccupato:

netsh interface portproxy show v4tov4

Puoi rimuoverli tutti se vuoi con

netsh int portproxy reset all

Una soluzione con script?

L'utente di GitHub e il membro della comunità Daehahn sta lavorando su uno script di PowerShell per automatizzare questo processo. Il thread di commenti inizia qui e il succo dello script PowerShell per wsl2-network.ps1 è qui. Ripristina firewall e portproxies, trova il nuovo IP della distribuzione predefinita e ti riconfigura. Salva questo .ps1 da qualche parte, leggilo ed esegui "unblock-file wsl2-network.ps1 " su di esso in modo da poter configurare rapidamente il tuo sistema per Shushing nella tua istanza WSL2!

Nota la variabile $Ports che probabilmente si apre più di quanto desideri o necessiti, ricordando che WSL e VS Code inoltreranno automaticamente le porte a localhost quando necessario per lo sviluppo.

Spero che sia di aiuto! Sarebbe bello se WSL2 non cambiasse il suo indirizzo IP interno ogni volta che si avvia in modo che questo possa essere reso ancora più semplice e automatizzato.

Per concludere e riassumere:

  • Questo post del blog, quello che stai leggendo ora, ha solo porte di inoltro di Windows e utilizza Linux OpenSSH di WSL2 e si autentica su Linux. Windows è coinvolto solo perifericamente. L'indirizzo IP di WSL2 cambia al riavvio e dovrai mantenere le regole del portproxy e del firewall con lo script ascoltato alla fine di quel post.
  • Questo altro post del blog - qui - utilizza OpenSSH di Windows e si autentica con Windows , quindi esegue WSL2. WSL2 si avvia, usa bash e Windows gestisce il traffico TCP.

Capisci cosa vuoi e usa quello giusto per te.

Altri link interessanti:

  • Docker Desktop per WSL 2 integra Windows 10 e Linux ancora più da vicino
  • Debug remoto di un'app Linux .NET Core in WSL2 da Visual Studio su Windows
  • Suggerimenti e trucchi fantastici per WSL (sottosistema Windows per Linux) che tu (o io) non sapevi fossero possibili
  • Ruby on Rails su Windows non è solo possibile, è favoloso usando WSL2 e VS Code
  • Sposta facilmente le distribuzioni WSL tra le macchine Windows 10 con l'importazione e l'esportazione!
  • Qual ​​è la differenza tra una console, un terminale e una shell?

Spero che sia di aiuto! Inoltre, iscriviti al mio canale YouTube!

Sponsor: Non perdere mai un bug:invia avvisi a Slack o invia un'e-mail e trova i problemi prima che lo facciano i tuoi clienti, utilizzando Seq 2020.1.


Linux
  1. Windows:come impedire a Windows di sovrascrivere Grub quando si utilizza una macchina a doppio avvio?

  2. Come entrare in una directory specifica?

  3. Come eseguire lo Scp tramite una macchina intermedia??

  4. Esecuzione di file exe o bat su computer Windows remoto da *nix

  5. Come eseguire SCP dal server Linux al client Windows

Come SSH in un Docker Container

Come SSH nel tuo server Linux da Windows

Come mi collego a Linux VPS tramite SSH da Linux e Windows OS?

IL MODO FACILE come eseguire SSH in Bash e WSL2 su Windows 10 da un computer esterno

Come eseguire SSH in una macchina Windows 10 da Linux O Windows O ovunque

Come impostare un profilo di scheda in Terminale di Windows per SSH automaticamente in una scatola Linux