GNU/Linux >> Belajar Linux >  >> Linux

Cara SSH ke WSL2 di Windows 10 dari mesin eksternal

Pos blog yang keren ya? Judul yang bagus, bukan?

JANGAN LAKUKAN INSTRUKSI DALAM POSTINGAN INI

sampai Anda membaca TINDAK LANJUT CARA MUDAH cara SSH ke Bash dan WSL2 di Windows 10 dari mesin eksternal dan membuat keputusan yang tepat untuk ANDA!

OpenSSH telah dikirimkan di Windows selama 5 tahun sekarang, jadi itu keren. Anda dapat melakukan banyak hal!

  • Cara menggunakan OpenSSH bawaan Windows 10 untuk secara otomatis SSH ke mesin Linux jarak jauh
  • Cara SSH ke Mesin Windows 10 dari Linux ATAU Windows ATAU di mana saja

Tapi seringkali orang ingin SSH bukan ke mesin Windows 10 mereka, melainkan, ke WSL2 yang berjalan di dalam/di belakang mesin Windows 10 mereka. Meskipun WSL2 dapat meneruskan port dari dalam ke luar (misalnya, localhost:8000 dalam instans WSL2 tersedia dari mesin Windows 10 lokal) jika Anda ingin membangun jalur ke port WSL2 dari sepenuhnya di luar mesin, Anda akan harus lebih eksplisit.

Instal OpenSSH-Server di WSL

Pertama, instal server OpenSSH di dalam Distro Linux Anda:

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.

Tentukan nomor port SSH Anda

Selanjutnya, di WSL2, edit /etc/ssh/sshd_config dan batalkan komentar pada baris Port.

Saya mengeditnya dengan sudo nano /etc/ssh/sshd_config , jangan malu!

SSH biasanya 22, tetapi saya suka menggunakan sesuatu seperti 2222 sehingga kurang jelas tetapi masih mudah diingat DAN berbeda dari 22 mesin Window Anda. Perhatikan bahwa saya menyuruhnya untuk mendengarkan pada 0.0.0.0, jadi, adaptor apa pun. Anda juga dapat mengatur PasswordAuthentication ke "tidak" jika Anda ingin menggunakan kunci SSH daripada kata sandi untuk otentikasi. Setel ke "ya" jika Anda tahu apa yang Anda lakukan dan tidak tahu cara menggunakan kunci ssh.

/etc/ssh/sshd_config

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

...STUFF BELOW THIS...

Dari dalam WSL2, dapatkan alamat IP Anda menggunakan "ifconfig." Milik saya adalah 172.23.129.80, milik Anda kemungkinan akan menjadi 172.SOMETHINGELSE dan itu akan berubah ketika WSL2 mulai dingin .

Anda mungkin ingin memastikannya berjalan, mengingat WSL2 tidak memiliki systemd.

service ssh start

Teruskan Port ke WSL2

Sekarang, dari perintah Windows Administrator - itu bisa cmd.exe atau powershell.exe, tidak masalah, gunakan net shell "netsh" untuk menambahkan aturan portproxy. Sekali lagi, ubah connectaddress ke ipaddress WSL2 ANDA, yang merupakan alamat internal mesin Anda.

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

Buka Firewallnya

Selanjutnya, dari prompt Administrator Windows yang sama, buka Port Firewall yang masuk. Anda dapat melakukannya dari Pengaturan Firewall Lanjutan, tetapi lebih mudah lagi Anda dapat menggunakan netsh lagi!

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

Anda dapat membuat daftar semua aturan portproxy Anda seperti ini jika Anda khawatir:

netsh interface portproxy show v4tov4

Anda dapat menghapus semuanya jika Anda mau dengan

netsh int portproxy reset all

Solusi dengan skrip?

Pengguna GitHub dan anggota komunitas Daehahn sedang mengerjakan Skrip PowerShell untuk mengotomatiskan proses ini. Utas komentar dimulai di sini dan inti dari skrip PowerShell untuk wsl2-network.ps1 ada di sini. Ini me-reset firewall dan portproxies, menemukan IP baru distro default Anda, dan mengatur Anda lagi. Simpan .ps1 ini di suatu tempat, baca, dan jalankan "unblock-file wsl2-network.ps1 " di atasnya sehingga Anda dapat menyiapkan sistem Anda dengan cepat untuk Shushing ke instans WSL2 Anda!

Perhatikan variabel $Ports yang kemungkinan membuka lebih dari yang Anda inginkan atau butuhkan, mengingat bahwa WSL dan VS Code akan secara otomatis meneruskan port ke localhost saat diperlukan untuk pengembangan.

Semoga ini membantu! Alangkah baiknya jika WSL2 tidak mengubah alamat IP internalnya setiap kali dijalankan sehingga ini dapat dibuat lebih mudah dan lebih otomatis.

Untuk menyimpulkan dan meringkas:

  • Pos blog ini - yang sedang Anda baca sekarang, hanya memiliki port penerusan Windows, dan menggunakan OpenSSH Linux WSL2 dan mengautentikasi terhadap Linux. Windows hanya terlibat secara periferal. Alamat IP WSL2 berubah saat reboot dan Anda harus mempertahankan aturan portproxy dan aturan firewall dengan skrip yang didengarkan di akhir postingan tersebut.
  • Pos blog lain ini - di sini - menggunakan OpenSSH Windows dan mengautentikasi dengan Windows dan kemudian menjalankan WSL2. WSL2 dimulai, menggunakan bash, dan Windows menangani lalu lintas TCP.

Pahami apa yang Anda inginkan dan gunakan yang tepat untuk Anda.

Tautan keren lainnya:

  • Desktop Docker untuk WSL 2 mengintegrasikan Windows 10 dan Linux lebih dekat
  • Men-debug jarak jauh aplikasi .NET Core Linux di WSL2 dari Visual Studio di Windows
  • Tips dan trik keren WSL (Windows Subsystem for Linux) yang mungkin tidak Anda (atau saya) ketahui
  • Ruby on Rails di Windows tidak hanya mungkin, ini luar biasa menggunakan WSL2 dan VS Code
  • Pindahkan distribusi WSL dengan mudah antara mesin Windows 10 dengan impor dan ekspor!
  • Apa perbedaan antara konsol, terminal, dan shell?

Semoga ini membantu! Juga, silakan berlangganan saluran YouTube saya!

Sponsor: Jangan pernah melewatkan bug — kirim peringatan ke Slack atau email, dan temukan masalah sebelum pelanggan Anda melakukannya, menggunakan Seq 2020.1.


Linux
  1. Windows – Bagaimana Mencegah Windows Menimpa Grub Saat Menggunakan Mesin Dual-boot?

  2. Bagaimana Cara Ssh Ke Direktori Tertentu?

  3. Menjalankan file exe atau bat pada mesin windows jarak jauh dari * nix

  1. Cara SSH di Linux dari Android

  2. Cara SCP dari server linux ke klien Windows

  3. Bagaimana cara menempelkan ke nano dari clipboard?

  1. Ssh – Mengakses Server Linux Dari Mesin Windows Dalam Mode Grafis Via Ssh?

  2. Bagaimana Cara Scp Melalui Mesin Menengah??

  3. Matikan mesin Windows dari terminal linux