Ini adalah posting blog yang menarik tentang Cara SSH ke WSL2 di Windows 10 dari mesin eksternal. Membacanya. Ketahui cara kerjanya. Pelajari itu. DAN JANGAN LAKUKAN KARENA TERLALU KOMPLEKS .
JANGAN LAKUKAN INI. Tidak apa-apa. Berhasil. Tapi itu barok. Anda meneruskan port ke subnet lokal kecil yang di-VM, Anda berurusan dengan alamat IP WSL2 yang berubah, Anda harus menjaga VM Anda tetap berjalan, dan Anda biasanya mencoba meluncur ke atas bukit.
Inilah masalahnya. Dalam postingan tersebut - yang seharusnya tidak Anda lakukan - Anda mematikan Windows Firewall untuk port Anda, meneruskan ke subnet internal, dan kemudian membiarkan WSL mengambil alih.
TAPI! Windows 10 sudah tahu cara menerima koneksi SSH. Faktanya, OpenSSH dikirimkan sebagai "Fitur sesuai Permintaan" selama bertahun-tahun. Masalahnya adalah Anda (pengalih Mac dan Linux) tidak menyukai shell default - PowerShell.
Jadi mengapa tidak mengubah shell Windows default untuk SSH ke Bash WSL2?
Boom. Sekarang Anda tidak memiliki penerusan porta, firewall hanya terbuka untuk satu proses, dan instans WSL2 Anda dimulai saat masuk. Secara harfiah yang terbaik dari semua dunia.
Bagaimana Anda mengatur SSH ke dalam WSL2 pada mesin Windows 10 Anda
Pertama, buka prompt PowerShell admin (menu Start, ketik PowerShell, tahan ctrl+shift, dan tekan enter) ketik ini:
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Lihat bagaimana saya memiliki Klien dan bukan Server OpenSSH? Tambahkan:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Sekarang mulai layanan SSHD, atau atur untuk memulai secara otomatis:
Start-Service sshd
Get-Service sshd
atau otomatis:
Set-Service -Name sshd -StartupType 'Automatic'
Mengonfigurasi Shell Default untuk OpenSSH di Windows 10
Di server saya (mesin Windows tempat saya menggunakan SSHing) saya akan mengatur kunci registri untuk mengatur shell default. Dalam hal ini, saya akan menggunakan open source lintas platform PowerShell Core. Anda dapat menggunakan apa pun yang membuat Anda bahagia dan bash WSL2 membuat saya bahagia.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force
Perhatikan bahwa bash.exe dalam konteks ini memulai "wsl -d YOURDEFAULTDISTRO
" jadi Anda ingin tahu apa Default Anda, dan jika Anda tidak menyukainya, ubah dengan wsl --set-default DISTRO
.
PERHATIAN:Anda memerlukan PATH LENGKAP DAN BENAR dalam perintah di atas. Ini berfungsi untuk cangkang apa pun. Karena saya menggunakan bash.exe, saya memulai WSL2 secara gratis tetapi SSH dengan solusi ini menggunakan kunci SSH Windows dan auth Windows. Perhatikan bahwa saat Anda memasukkan sandi untuk autentikasi!
Lebih baik lagi jika saya ingin menambahkan item menu (profil) ke satu Terminal Windows lokal dengan entri ke ssh ke WSL saya di Mesin Windows jarak jauh saya yang secara otomatis akan memasukkan saya ke dalamnya dari tempat lain menggunakan kunci publik, saya juga bisa melakukannya!
Untuk menyimpulkan dan meringkas:
- Pos blog ini - yang Anda baca menggunakan OpenSSH Windows dan mengautentikasi dengan Windows lalu menjalankan WSL2. WSL2 dimulai, menggunakan bash, dan Windows menangani lalu lintas TCP.
- Pos blog lain ini - di sini - 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.
Pahami apa yang Anda inginkan dan gunakan yang tepat untuk Anda.
Menikmati!
Sponsor: Bug di prod? Dapatkan ke dasarnya, cepat, dengan pencarian log produksi langsung di Seq 2020.1.