Ada orang yang menghabiskan sebagian besar waktu kerjanya di konsol, ada yang menggunakan terminal jika perlu, menjalankan sesuatu sesuai instruksi. Tapi saya pikir setiap spesialis IT, apakah dia seorang pengembang, administrator sistem, insinyur jaringan, atau bahkan pengembang yaml senior, menggunakan antarmuka baris perintah. Tidak semua orang berpikir untuk meningkatkan lingkungan kerja di CLI dan meningkatkan produktivitas di terminal. Saya ingin berbagi pengalaman mengatur lingkungan untuk bekerja dengan Linux dari Windows.

Dari artikel ini Anda akan mempelajari alat dan terminal apa yang saat ini digunakan untuk menjalankan aplikasi Linux pada Windows 10. Kita akan berbicara tentang
WSL 2 dan
Windows Terminal , yang semakin populer di kalangan pengguna yang membutuhkan Linux untuk bekerja. Karena sebagian besar kasus penggunaan saya terkait dengan koneksi jarak jauh melalui SSH, sebagian besar informasi akan relevan untuk kasus koneksi jarak jauh, dengan semua fitur yang terkait dengan ini (meneruskan ssh kunci melalui agen ssh, meneruskan X-server, mengelola koneksi dll )
Perhatian! Di bawah potongan banyak gambar dan menyusut, tetapi kadang-kadang banyak, gif, disarankan untuk membuka artikel jika Anda memiliki akses yang sesuai ke Internet. Datanglah di bawah kucing jika Anda tertarik menjalankan utilitas Linux di Windows, mengoptimalkan pekerjaan Anda di lingkungan CLI, atau Anda hanya menyukai teks teknis dan terminal warna. Saya mencoba mencerahkan teks dengan screencast dan tangkapan layar terminal, sehingga tidak akan membosankan.
Pendahuluan
Baik di rumah maupun di laptop yang berfungsi, satu-satunya OS yang saya miliki adalah Windows 10, dan tahun ini saya akhirnya beralih menggunakan hanya WSL daripada VM / dualboot / Cygwin / MinGW. Sekarang terminal default saya adalah shell WSL lokal, tempat saya dapat menjalankan hampir semua tugas, seperti pada Linux asli. Selain itu, server mini Intel NUC berjalan di jaringan rumah, tempat Proxmox digunakan dengan wadah LXC dan KVM, tempat Docker berputar. Saya pergi ke semua VM melalui SSH, dengan kunci dari direktori Windows. Banyak waktu dalam aktivitas profesional terjadi di CLI, dengan server dan jaringan yang sama. Oleh karena itu, selalu ada keinginan untuk berurusan dengan alat untuk pekerjaan yang lebih nyaman di terminal, dan di Windows selalu ada masalah dengan ini. Tapi sekarang semuanya berubah.

Artikel ini dan artikel selanjutnya lebih berfokus pada penggemar yang mencari solusi segar dan ingin memompa cangkang mereka. Tetapi untuk pemula, sesuatu harus menarik, meskipun artikel tersebut ternyata tenggelam dalam topik ini dan menunjukkan bahwa pembaca memiliki pengetahuan mendasar di Linux. Semua informasi dikumpulkan berdasarkan pengalaman pribadi menggunakan WSL, terminal, serta halaman Stack Overflow dan Github yang tak ada habisnya dalam proses meningkatkan konfigurasi yang terus-menerus dan menemukan alat yang nyaman untuk bekerja.
Subsistem Windows untuk Linux (WSL) 2
Ada beberapa artikel normal tentang WSL di Internet dan Habr (
dulu artikel tentang menginstal / mengkonfigurasi WSL dengan server X,
dua catatan tentang WSL 2,
tiga artikel tentang pengembangan Python dalam VSCode dengan WSL) yang menjelaskan instalasi dan konfigurasi sistem. Namun, tidak semua tindakan pemasangan sudah relevan, serta pembatasan dengan perangkap menjadi kurang. Saya tidak akan membahas instalasi secara terperinci, instruksi untuk menginstal versi WSL (kedua) saat ini
ada di situs web Microsoft , dan Anda juga dapat menemukan
tutorial singkat di Internet.

Sekarang WSL masih dalam pengembangan aktif dan baru-baru ini (
Juni 2019 ) versi baru WSL 2 dirilis, yang saat ini hanya tersedia untuk versi baru Windows untuk anggota Windows Insiders. Jika memungkinkan, saya menyarankan Anda untuk segera memutakhirkan WSL ke versi 2, karena ini meningkatkan kerja panggilan sistem, bekerja dengan jaringan, FS, dan secara umum dibangun di atas arsitektur yang berbeda dan, menurut beberapa laporan, memberikan
peningkatan kecepatan 20 kali lipat dibandingkan dengan versi pertama.
Anda dapat melihat versi Windows 10 dan build OS di
Start -> Settings -> System -> About , untuk menginstal WSL 2, Anda memerlukan
Windows 1903 dan setidaknya versi build
18917 . Jika Anda bukan anggota
Program Windows Insider , kemungkinan besar pembaruan tidak akan tiba sampai rilis yang stabil. Jadi jika Anda ingin meningkatkan ke versi terbaru, Anda dapat mengaktifkan akses awal (
Cepat ) di
Mulai -> Pengaturan -> Pembaruan & Keamanan -> Program Windows Insider , perbarui dan nonaktifkan pembaruan lebih lanjut. Perlu mempertimbangkan bahwa pembaruan yang belum teruji secara massal akan diinstal, yang dapat mempengaruhi stabilitas.
Harus diingat bahwa sebelum membangun versi
18995, WSL memiliki
bug ketika bekerja dengan file pada disk Windows yang dipasang, dinyatakan sebagai kesalahan Input / output, hanya memulai kembali WSL (
wsl - shutdown di PowerShell) membantu. Secara umum, ada banyak bug tetap yang masih ada di WSL versi 1 (yang diatur secara default) dan distribusi non-preview Windows. Jika pembaruan OS Anda diatur oleh kebijakan perusahaan, kemungkinan besar pembaruan terbaru tidak akan tiba dan Anda harus mengingatnya. Pada salah satu laptop saya telah membangun 18956 dan tidak ada pembaruan, meskipun faktanya opsi
Fast dipilih dalam pengaturan Program Insider. Sistem bersih diinstal pada laptop lain beberapa bulan yang lalu, dan pembaruan secara berkala tiba dan diinstal.
Instal WSL 2
WSL memerlukan Hyper-V untuk diaktifkan karena distribusi Linux berjalan pada VM ringan menggunakan virtualisasi Hyper-V.

Selanjutnya, saya akan memberikan instruksi instalasi singkat dari distribusi CLI PowerShell dari WSL menggunakan
Kali Linux sebagai contoh). Jika Anda lebih suka
Ubuntu atau distribusi
Linux lain yang tersedia, ganti tautan dan nama dengan yang sesuai.
Periksa Versi Windows Build:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | Select CurrentBuild
Aktifkan komponen
VirtualMachinePlatform dan
Microsoft-Windows-Subsystem-Linux:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Mulai ulang
Selanjutnya, instal distribusi dari Microsoft Store (
https://aka.ms/wslstore ), atau terus berjalan di PowerShell:
curl.exe -L -o kali.appx https://aka.ms/wsl-kali-linux-new
Add-AppxPackage .\kali.appx
rm .\kali.appx
Luncurkan konsol WSL (distribusi akan muncul di menu Start, cari dengan nama distro), tunggu undangan untuk menginstal pengguna baru, tutup konsol.
Sekarang distribusi akan muncul dalam daftar jika dijalankan di PowerShell:
wsl -l -v
Jika perlu, ubah distribusi ke format WSL versi 2:
wsl --set-version kali-linux 2
wsl --set-default-version 2
Jadikan root sebagai pengguna default (opsional):
kali config --default-user root
Jika Anda mendapatkan kesalahan
"Upaya koneksi gagal karena pihak yang terhubung tidak merespons dengan benar setelah periode waktu tertentu, atau koneksi yang dibuat gagal karena host yang terhubung gagal merespons." , Maka Anda memiliki bangunan di mana yang berikutnya (sudah diperbaiki dalam rilis terbaru) bug. Seperti biasa, ada
solusi , atau gunakan distribusi Ubuntu, saya tidak punya masalah dengan itu pada yang sama bukan versi terbaru dari build.
Jika perlu, Anda dapat memindahkan disk virtual WSL ke partisi lain (berbeda dari C :) sesuai
instruksi . Lebih baik melakukan ini segera, karena tidak semuanya bisa berjalan lancar.
Penafian tentang keamanan . Di WSL dan di Linux-server lain di jaringan rumah, saya tidak menjalankan sistem kritis, dan tidak ada pengguna lain (kecuali saya) di jaringan, jadi saya pergi ke root hampir di mana-mana, dengan ssh otentikasi melalui kunci. Saya tahu bahwa ini bukan praktik terbaik, tetapi saya berbicara tentang lingkungan dev pribadi dan saya tidak melihat gunanya membuat pengguna yang bukan pengguna root. Masalah keamanan tidak akan dipertimbangkan dalam artikel ini, saya akan menulis tentang hal itu suatu hari nanti (tentang bagaimana mengatur interaksi layanan melalui TLS dengan pembaruan sertifikat terpusat di jaringan rumah; tentang sinkronisasi
~ / .ssh / config antara server, penerusan port dan kunci, dll.).
Konfigurasi WSL
Mulai dari build
17093 , file konfigurasi WSL utama terletak di sistem distribusi FS di
/etc/wsl.conf , itu menjelaskan pengaturan yang akan diterapkan setiap kali distribusi di-boot:
- Automount - automount drive Windows
- Jaringan - menghasilkan file resolv.conf, host
- Interop - mulai proses Windows dan tambahkan Windows $ PATH ke Linux $ PATH
Awalnya, WSL berjalan tanpa konfigurasi ini, itu harus didaftarkan secara manual:
[automount]
enabled = true
root = /mnt
options = "metadata,umask=22,fmask=11"
mountFsTab = true
[network]
generateHosts = true
generateResolvConf = true
[interop]
enabled = true
appendWindowsPath = true
Beberapa pengaturan digunakan dengan nilai default dan dengan
/etc/wsl.conf kosong, tetapi untuk operasi yang benar dengan file Anda perlu mendaftarkan setidaknya parameter
opsi , jika file Windows akan dengan 777 izin dan ini tidak dapat diubah dari Linux.

Anda dapat me-reboot distribusi dari PowerShell dengan perintah:
wsl -t kali-linux
Setelah itu, Anda dapat memperbarui paket dan menyetel OS sendiri. Saya tidak akan menyentuh pengaturan shell dan lingkungan di Linux, saya akan meninggalkan ini untuk artikel selanjutnya.
apt -y update && apt -y upgrade
Sistem dan Kinerja File WSL 2
File di dalam WSL versi 2 disimpan di disk virtual VHDX, ext4 digunakan sebagai sistem file. Anda dapat mengakses rootfs WSL melalui jalur dalam format ini:
\\wsl$\{DistroName}\
Atau, Anda dapat mengetik
"explorer.exe." Di CLI dan browser Windows akan terbuka di direktori saat ini.
WSL versi 1 tidak menggunakan VHDX dan memiliki akses mudah ke direktori di mana file Linux berada, dan Microsoft
sangat tidak disarankan untuk mengubah file Linux dari Windows. Dalam WSL versi baru, akses ke FS pada disk virtual disediakan menggunakan server file
Plan 9 Filesystem Protocol .

Dalam versi WSL sebelumnya, ada masalah kinerja sistem file karena panggilan sistem ditiru melalui API Windows, akses file lambat dan tidak stabil. Pada akhir 2019, WSL 2 mengubah arsitekturnya dan menggunakan kernel Linux asli. Dilihat oleh
slide dari presentasi youtube
Subsistem Windows baru untuk arsitektur Linux: penyelaman yang dalam , kinerja operasi disk meningkat 2-5 kali.
Kapasitas disk maksimum dibatasi hingga 256GB, jika volume ini terlampaui, Anda harus melakukan pengubahan ukuran, petunjuknya ada di
dokumentasi .
WSL awalnya memiliki masalah dalam melepaskan sumber daya setelah menggunakan RAM. Build 19013 memecahkan masalah ini. Jika Anda menjalankan tugas yang menuntut (misalnya, merakit aplikasi karat), Anda akan melihat bahwa proses
Vmmem akan berada di bagian atas Task Manager, tetapi konsumsi memori telah menurun secara signifikan di versi WSL terbaru.

Jaringan
Nama host (nama host) di Linux diambil dari nama PC di Windows, terlepas dari apa yang tertulis di
/ etc / hostname atau dengan perintah
hostnamectl set-hostname .
Berbeda dengan versi pertama, di WSL 2 jaringan bekerja melalui sakelar Hyper-V virtual:
❯❯ ipconfig.exe | grep IPv4
IPv4 Address. . . . . . . . . . . : 192.168.88.200
IPv4 Address. . . . . . . . . . . : 172.31.160.1
IPv4 Address. . . . . . . . . . . : 172.27.144.1
❯❯ ip -br -4 ad show dev eth0
eth0 UP 172.27.150.196/20
❯❯ ip ro list default
default via 172.27.144.1 dev eth0

Dalam hal ini, jaringan
172.27.144.0/20 digunakan di bawah WSL, alamat pertamanya (
172.27.144.1 ) adalah sistem host Windows.
Dari Linux, Anda dapat mengakses layanan host (berjalan pada Windows) melalui jaringan, misalnya, seperti ini:
❯❯ nmap -p 3389 $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
Alamat IP Windows diambil dari
/etc/resolv.conf , di mana ia dihasilkan secara otomatis sesuai dengan pengaturan
wsl.conf .
Sebaliknya, jika Anda memerlukan koneksi ke soket Linux dari aplikasi Windows, Anda harus mengakses alamat IP WSL. Ada peringatan - di Linux, layanan tidak boleh dijalankan di
localhost (127.0.0.1) , tetapi pada alamat
0.0.0.0 . Misalnya, untuk dengan cepat meningkatkan proxy SOCKS5 ke VPS Anda, Anda harus memulai SSH dengan parameter
penerusan port dinamis :
❯❯ ssh -D 0.0.0.0:2299 -N -f proxy.example.com
Setelah itu, dalam aplikasi Windows, misalnya Chrome, sebagai alamat SOCKS5, daftarkan bukan
localhost , tetapi alamat WSL, dalam hal ini
172.27.150.196 . Omong-omong, dengan cara sederhananya seperti tunneling traffic melalui VPS di Chrome, menjadi mungkin untuk menggunakan akses ke situs-situs melalui IPv6.

Linux akan mengubah alamat IP-nya setelah reboot setiap kali, jadi dalam skenario di mana Anda perlu memiliki port forwarding yang terus-menerus bekerja dan secara otomatis mulai, Anda perlu mencari solusinya. Ada banyak cara untuk mengatasi masalah ini, dari berbagai tingkat kruk, Anda dapat membaca lebih lanjut dalam
edisi ini di github. Saya menggunakan utilitas
go-wsl2-host , yang mengimplementasikan Layanan Windows, yang secara otomatis menambahkan alamat IP WSL ke
file host Windows, sehingga Anda dapat mendaftarkan nama host seperti
ubuntu.wsl pada sistem host dan mengakses Linux di dalamnya. Namun, semua ini kruk dan tidak berfungsi dengan baik, masih menunggu Microsoft untuk memperbaiki masalah ini.
UPD Ketika saya sedang menulis artikel ini, saya menemukan bahwa ada pembaruan (build
18945 ), di mana menjadi mungkin untuk melewati layanan melalui
localhost ke layanan yang berjalan di WSL. Benar, ternyata ada
bug karena yang masih tidak berfungsi untuk semua orang,
perbaikan di build Agustus adalah
18970 . Karena tidak semua orang menerima pembaruan, bahkan jika saya adalah anggota program Windows Insiders, saya tidak menyesuaikan informasinya, mungkin itu akan membantu seseorang mengatur interaksi jaringan.
OpenSSH pada Windows dan layanan autostart
Windows 10, seperti Windows Server 2019, hadir dengan
garpu OpenSSH , yang mencakup semua ssh-keygen yang sudah dikenal, ssh-add, scp, dan utilitas lain, termasuk ssh-agent dan server sshd itu sendiri. Baik klien dan server dapat
diinstal melalui
Aplikasi> Aplikasi dan Fitur> Kelola Fitur Opsional, tetapi versi klien ssh tidak akan menjadi yang terbaru. Saya menemukan bug yang tidak memungkinkan
saya untuk terhubung ke host melalui host melompat dengan opsi
ProxyJump dan ternyata masalah ini sudah diperbaiki, tetapi saya harus secara manual memperbarui SSH klien. Anda dapat menginstal versi Win32 OpenSSH saat ini dengan mengunduh zip dari bagian
Pers pada github dan membongkar, misalnya, di
C: \ Program Files \ OpenSSH . Perangkat lunak pihak ketiga ssh.exe (misalnya, ketika menggunakan mode Pengembangan Jarak Jauh dalam VSCode) dipanggil dari
$ PATH (
% SYSTEMROOT% \ System32 \ OpenSSH \ ), Anda perlu mengubah variabel lingkungan. Variabel lingkungan diubah melalui GUI di
Mulai> Edit variabel lingkungan sistem (
Mulai> Ubah variabel lingkungan sistem ), di sana Anda harus meletakkan cara baru di atas versi lama.
Karena Systemd tidak bekerja di WSL, ada masalah dengan startup layanan dengan dimulainya sistem. Ada beberapa cara untuk mengonfigurasi ssh auto start server di WSL, cara termudah adalah membuat tugas di Penjadwal Tugas, di mana Anda dapat menentukan perintah mulai server. Di Internet, Anda dapat menemukan berbagai
instruksi startup melalui skrip
vbs ,
ps1 atau
bat . Masalah dengan hampir semua metode adalah bahwa pemicunya adalah untuk memulai OS Windows utama, yaitu, jika WSL crash dan Anda harus me-restart sistem (
wsl -t ), maka Linux akan mulai tanpa layanan berjalan. Ketika Windows mulai, distribusi WSL hanya dimulai ketika pertama kali diakses.
Saya menggunakan server SSH pada laptop di dalam WSL sehingga saya bisa pergi dari mesin ke mesin dari jarak jauh. Dan, karena saya menggunakan teknik ssh port forwarding dan konfigurasi terpusat dari klien SSH, saya bisa secara transparan pergi ke semua server saya, memasukkan nama host alih-alih alamat. Artinya, bahkan jika Anda menghubungkan salah satu laptop ke jaringan seluler, daemon autossh akan terhubung ke host lompat dan saya masih bisa pergi ke komputer, tidak ada NAT akan menjadi penghalang. Karena itu, penting bagi saya bahwa sshd selalu aktif.

Satu-satunya cara untuk mengakses SSH di WSL adalah dengan meneruskan port SSH. Ini dapat dilakukan dari WSL itu sendiri menggunakan
RemoteForward , atau dari server lain di jaringan rumah. Hanya sedikit orang yang membutuhkannya, dan ini sudah tingkat lanjut, jadi saya hanya akan memberikan perintah yang berfungsi:
❯❯ ssh -R '*:2363:*:22' -N -f mt.example.com
Sekarang, saat menghubungkan ke alamat
mt.example.com:263, Anda bisa langsung ke WSL.
Jika Anda berencana untuk meningkatkan server SSH di WSL, Anda harus ingat untuk mengkonfigurasi parameter startup server yang diperlukan di
/ etc / ssh / sshd_config . Untuk menghindari konflik dengan binding layanan pada port 22, server OpenSSH di Windows harus dinonaktifkan atau dihapus sepenuhnya jika diinstal (
Aplikasi> Aplikasi dan Fitur> Kelola Fitur Opsional ).
Penerusan X
Ternyata menjadi momen yang menyenangkan bahwa di Windows 10 ada utilitas
clip.exe yang memungkinkan Anda untuk mengarahkan stdout langsung ke papan klip Windows. Ini nyaman digunakan dalam program seperti tmux, dan terima kasih untuk meneruskan server X, teks juga dapat disalin dari host jarak jauh. Agar semuanya berfungsi, Anda harus selalu menjalankan X-server pada Windows dan variabel
$ DISPLAY diatur dengan benar.
Teori yang sedikit membosankan. Pada sistem * nix yang menjalankan X, ada berbagai jenis clipboard (
primer, sekunder, clipboard ), dalam konteks artikel ini ini tidak begitu penting, tetapi penting untuk pemahaman umum tentang mekanisme kerja. Ada dua utilitas (xclip dan xsel) untuk bekerja dengan clipboard di Linux. Kedua utilitas memiliki fungsi yang sama, di xsel itu sedikit lebih besar, tetapi fungsionalitas dasar yang diperlukan untuk meneruskan isi buffer adalah sama. Dalam aplikasi X, teks yang dipilih jatuh ke dalam pemilihan utama, itu dimasukkan dengan tombol tengah mouse, di xclip dan xsel pemilihan utama digunakan secara default.
Sebagai contoh, untuk menyalin isi variabel ke buffer default, Anda harus meneruskan stdout ke stdin utilitas xclip, tanpa parameter tambahan:
❯❯ echo -n $DISPLAY | xclip
Dan untuk menampilkan isi buffer default, jalankan xclip dengan
-o switch:
❯❯ xclip -o
172.20.160.1:0
Agar clipboard diarahkan melalui server X dan aplikasi grafik dijalankan di server X lokal, Anda perlu mengatur alamat IP, yang merupakan gateway default untuk WSL, dalam variabel
$ DISPLAY . Sejauh ini, tidak ada yang lebih baik daripada mengambilnya dari
resolv.conf (yang secara otomatis dihasilkan oleh Windows) belum ditemukan. Oleh karena itu, cara termudah adalah dengan mendaftarkan ekspor variabel
$ DISPLAY di profil shell (misalnya,
~ / .zshrc untuk zsh).
❯❯ echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0" >> ~/.zshrc

Sebagai X-server, saya memilih
VcXsrv gratis, ia dapat bekerja dengan buffer, memiliki mode tampilan jendela yang berbeda dan diluncurkan dari baris perintah dengan opsi yang ditentukan.
Menggunakan tautan ke intisari, Anda dapat melihat semua opsi.
Anda dapat membuat tugas autorun untuk server X di Penjadwal Tugas seperti ini:
Triggers: At startup
Actions: Start a program
____Program: "%ProgramFiles%\VcXsrv\vcxsrv.exe"
____Arguments: -wgl -dpi auto -ac -multiwindow
Kunci ssh
Agar program dari Windows dapat menggunakan kunci SSH (misalnya, editor ketika bekerja dengan repositori GitHub jarak jauh), dan pada saat yang sama tidak ada salinan kunci kedua di WSL, yang terbaik adalah membuat kunci di Windows
% HOMEPATH% /. Ssh dan membuat symlink di rumah Direktori WSL.
ssh-keygen -f /mnt/c/Users/${WIN_USER}/.ssh/id_rsa -b 4096
ln -sf /mnt/c/Users/${WIN_USER}/.ssh/id_rsa ${HOME}/.ssh/id_rsa
ln -sf /mnt/c/Users/${WIN_USER}/.ssh/id_rsa.pub ${HOME}/.ssh/id_rsa.pub
Atau, di
~ / .ssh / config, Anda dapat menentukan parameter
IdentityFile dengan menentukan lintasan ke tombol pada disk Windows:
Host *
IdentityFile /mnt/c/Users/${WIN_USER}/.ssh/id_rsa
Jika kunci disalin dari suatu tempat dan izin file tidak diatur dengan benar, perbaiki izin:
chmod 600 /mnt/c/Users/${WIN_USER}/.ssh/id_rsa
chmod 644 /mnt/c/Users/${WIN_USER}/.ssh/id_rsa.pub
chmod 700 /mnt/c/Users/${WIN_USER}/.ssh

Dengan demikian, ketika mengatur
akses lebih lanjut
dengan kunci SSH, pengguna diidentifikasi secara unik oleh satu set kunci di satu tempat, baik saat menggunakan aplikasi Windows dan Linux. Sekarang Anda dapat menambahkan kunci publik ke server / layanan, di mana Anda harus pergi dari komputer ini. Jika ada perangkat lain di jaringan rumah yang memerlukan akses SSH, maka akan benar untuk menyalin kunci publik Anda ke server ini (
ssh-copy-id ), tetapi Anda tidak perlu menyalin kunci dari satu server ke yang lain. Karena dimungkinkan (dan perlu) untuk menggunakan ssh-agent ketika bekerja melalui SSH, ketika menghubungkan dari satu server ke yang lain, agen berhati-hati bahwa otorisasi terjadi pada kunci yang diteruskan. Agar semuanya berfungsi dengan benar dan seperti yang diharapkan, Anda harus menjaga file
~ / .ssh / config , di mana Anda harus mendaftarkan semua opsi yang diperlukan.
Host *
TCPKeepAlive yes
ServerAliveInterval 30
ServerAliveCountMax 3
ForwardAgent yes
AddKeysToAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Terminal mana yang dipilih untuk bekerja di Linux pada Windows
Pertama, saya ingin membuat review kecil dari terminal shell yang ada untuk Windows yang dapat menjalankan WSL. Di antara pengguna, prosesor
MobaXterm fungsional
populer , yang dapat membuat berbagai sesi, termasuk yang grafis (WSL, bash / zsh, Mosh, RDP, VNC, dll.), Memungkinkan Anda untuk membuat makro dan menjalankan skrip, memiliki banyak pengaturan dan fitur, ssh agent, autorun ssh port forwarding, dan bahkan memiliki server ftp / tftp / http bawaan, tetapi produk ini sumber tertutup dan, terlebih lagi, dibayar.
Hyper adalah emulator terminal lain yang lebih modern yang memungkinkan Anda untuk menjalankan shell WSL, terminal dibangun di atas HTML / JS / CSS dan diperluas menggunakan plug-in dalam bentuk modul node.js (
daftar yang luar biasa ). Ada terminal lain yang memungkinkan Anda menjalankan WSL dengan berbagai tingkat kruk (
ConEmu , garpu
Cmder ,
WSLtty , dll.), Tetapi saya akan membiarkannya tanpa pengawasan.

Lebih lanjut dalam artikel ini kita akan berbicara tentang
Terminal Windows , yang saya beralih ke baru-baru ini, dan sejauh ini saya hanya mengalami emosi positif.
Terminal masih dalam versi beta, tetapi kerjanya cukup stabil. Dari fitur multitab yang saat ini diimplementasikan, pemisahan panel (splitting), profil khusus koneksi terminal, skema warna, well, tidak ada lagi yang perlu dicantumkan. Tetapi fungsi ini cukup, saya bahkan suka bahwa perangkat lunak tidak kelebihan dengan berlebihan - seolah-olah pengembang mematuhi prinsip
KISS .
Terminal berevolusi dari proyek Windows Console (ConPTY), belajar bagaimana mendukung sekuens ANSI / VT, warna asli RGB 24-bit, dan UTF-8. Mengikuti tautan (
awal ,
lanjutan ) di Habré, terjemahan yang luar biasa dari serangkaian posting blog
Windows Command-Line: Di dalam Windows Console , yang menceritakan tentang sejarah pembuatan terminal, standar terkait untuk mentransfer urutan pelarian, halaman kode, unicode, kemunculan emulator terminal dan di masa mendatang. sudah merupakan evolusi dari baris perintah windows. Teknolog mungkin tertarik. Tim teknik yang mengerjakan proyek opensource ini mengelola devlog
Windows Command Line , yang lebih dari sepenuhnya didedikasikan untuk WSL dan Terminal Windows. Saya tidak akan pernah percaya sebelum saat itu bahwa saya akan menonton dengan minat pengembangan produk MS, tetapi apa yang mereka lakukan sebagai bagian dari pengembangan WSL, Terminal dan VSCode benar-benar layak dihargai. Bagaimana pengembangan WSL dimulai, dijelaskan dalam
Microsoft Open Source Stories (ada
terjemahan tentang Habré). Omong-omong, Microsoft telah menjadi anggota platinum dari
Linux Foundation sejak 2016.
Instal dan konfigurasikan Terminal Windows
Anda dapat menginstal Terminal Windows dari
Windows Store , atau dengan mengunduh biner dari bagian
Pers di github proyek, semua informasi yang relevan, instruksi, dan FAQ juga ada di sana. Terminal membutuhkan setidaknya versi Windows 1903 dan
versi 18362 . Lebih baik untuk menginstal melalui Windows Store, karena lebih mudah untuk memperbarui dalam hal ini, langsung dari toko. Pembaruan dikeluarkan secara teratur,
peta jalan versi pertama terminal telah diletakkan di github. Saat ini, semua fitur versi 1 telah diimplementasikan (sesuai dengan rencana, untuk mengimplementasikan semua perbaikan pada akhir 2019), kemudian beberapa bulan bekerja untuk memperbaiki bug dan pada bulan April 2020 direncanakan rilis resmi Terminal v1.0. Sangat menyenangkan bahwa MS sekarang ada di github, perangkat lunak mereka telah belajar menunjukkan log, kesalahan yang dapat dipahami, dan masalah apa pun dengan mudah di-google.

Belum ada banyak pengaturan di terminal, tetapi cukup untuk pekerjaan yang nyaman, produk berkembang secara aktif, ada di
github di mana pengguna dapat membuat permintaan fitur atau laporan bug. Pengembang ikut serta dalam membahas masalah dengan pengguna, sering kali menawarkan penyelesaian ketika bug ditemukan.

Konfigurasi disimpan dalam format json, setelah disimpan segera diterapkan. Ini nyaman jika hanya karena Anda dapat menerapkan praktik yang baik untuk mengelola konfigurasi lingkungan kerja - Saya menyimpan semua konfigurasi Linux dalam repositori git, pada Windows saya hanya menggunakan VSCode dari alat kerja, yang dapat menyinkronkan konfigurasi melalui github gist, dan menyimpan konfigurasi ruang kerja lokal secara terpisah di dotfiles . Jadi Terminal bergerak ke arah yang sama, menggunakan hotkey yang sama dan format konfigurasi seperti VSCode. Ngomong-ngomong, mengedit konfigurasi mudah dilakukan melalui VSCode, terutama jika Anda sudah menggunakan editor yang sangat baik dari MS. File konfigurasi terminal sudah berisi banyak pengaturan default, dan editor yang tepat memungkinkan Anda untuk melihat semua opsi dengan deskripsi opsi
kunci dan
nilai dari
skema (ini sangat nyaman ketika proyek belum memiliki dokumentasi lengkap). Plus, semua chip IDE tersedia dalam bentuk pelengkapan otomatis, intellisense, pemeriksaan sintaks, pemformatan, dll.

Dokumentasi untuk pengembang tersedia di
sini , tetapi di
sini ada halaman kecil dokumentasi untuk pengguna saat ini.
Halaman terpisah dikhususkan untuk pengaturan yang ditulis dalam file konfigurasi json. Dari sana Anda dapat mengetahui bahwa secara struktural pengaturan dibagi menjadi:
- Global (profil default, ukuran awal jendela terminal, tema, dll.)
- Ikatan Kunci
- Profil (pengaturan khusus untuk setiap terminal)
- Skema (skema warna)
Ada yang namanya profil dinamis, mereka muncul di konfigurasi secara otomatis dan memiliki properti
sumber .
Ini berlaku untuk distribusi WSL dan Azure Cloud Shell. Untuk membuat duplikat dari profil distribusi WSL yang sama (misalnya, Ubuntu), harus menghasilkan GUID dan mendaftar semua pengaturan yang diinginkan kecuali sumber , dan sebagai commandline mendaftar wsl DistroName -d {} .Font
Agar terminal benar-benar menyenangkan pengguna, perlu untuk menginstal font dengan dukungan untuk karakter dan pengikat khusus. Anda dapat memilih dari:Saya menggunakan font programmer Fira Code baik di terminal maupun di editor. Ini mendukung sebagian besar karakter yang digunakan dalam desain program CLI dan antarmuka konsol, pengikat, dan juga tidak ada masalah dengan menampilkan emoji di terminal.
Font diinstal pada Windows menggunakan installer font OS. Untuk melakukan ini, unduh versi terbaru dari font yang Anda suka dari arsip rilis github dan instal font secara manual di sistem.Anda dapat melihat nama font (pengaturan fontFace terminal ) selama instalasi atau yang lebih baru dalam aplikasi Character Map ( Tabel Simbol ). Selain itu, di Mulai -> Pengaturan -> Personalisasi -> Font Anda dapat melihat bagaimana font ditampilkan dalam mode yang berbeda, dan pada saat yang sama memeriksa bagaimana ligatur digambar.
Kesimpulan
Hasilnya adalah artikel yang sangat panjang, di satu tempat semua informasi yang relevan tentang menginstal, mengkonfigurasi dan menggunakan Terminal Windows bersama dengan WSL dikumpulkan. Di masa depan, saya ingin menulis artikel tentang ZSH dan tmux dengan cara yang sama, dan menuliskan pengalaman saya menggunakan konfigurasi untuk VM dan menyinkronkan dotfile antara host. Semuanya dalam kerangka otomatisasi jaringan rumah, tetapi akan berguna bagi pengembang / pengembang / insinyur sistem. Topik lain yang belum terpecahkan adalah peluncuran Docker di WSL 2 , tapi saya tidak perlu menjalankan docker di komputer pribadi, karena ada server khusus untuk ini.Saya harap tidak ada yang menyesal membaca artikel ini dan membawa pengetahuan baru. Jika ada yang ingin ditambahkan, mari berbagi pemikiran kami dalam komentar. Jika Anda memiliki komentar pada teks, tulis ke PM, saya ingin tetap memperbarui panduan ini.Referensi