Menyiapkan lingkungan di CLI. Terminal WSL / Windows

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


Source: https://habr.com/ru/post/id481746/


All Articles