Hubungkan ke sistem Linux target Anda di Visual Studio
Dukungan Linux tersedia di Visual Studio 2017 dan yang lebih baru.
Anda dapat mengonfigurasi proyek Linux untuk menargetkan komputer jarak jauh atau Subsistem Windows untuk Linux (WSL). Anda perlu mengatur koneksi jarak jauh di Visual Studio 2017 untuk komputer jarak jauh dan WSL.
Anda dapat mengonfigurasi proyek Linux untuk menargetkan komputer jarak jauh atau Subsistem Windows untuk Linux (WSL). Untuk komputer jarak jauh, Anda perlu mengatur koneksi jarak jauh di Visual Studio. Untuk terhubung ke WSL, silakan lompat ke bagian Hubungkan ke WSL.
Saat menggunakan koneksi jarak jauh, Visual Studio membangun proyek Linux C++ di komputer jarak jauh. Tidak masalah jika itu adalah komputer fisik, komputer virtual di cloud, atau WSL. Untuk membangun proyek, Visual Studio menyalin kode sumber ke komputer Linux jarak jauh Anda. Lalu, kode akan dikompilasi berdasarkan pengaturan Visual Studio.
Catatan
Mulai Visual Studio 2019 versi 16.5, Visual Studio mendukung koneksi kriptografi yang aman dan sesuai dengan Standar Proses Informasi Federal (FIPS) 140-2 ke sistem Linux untuk pengembangan jarak jauh. Untuk menggunakan koneksi yang sesuai dengan FIPS, ikuti langkah-langkah di Menyiapkan pengembangan Linux jarak jauh yang aman dan sesuai dengan FIPS.
Siapkan server SSH pada sistem jarak jauh
Jika ssh
belum disiapkan dan berjalan di sistem Linux Anda, ikuti langkah-langkah berikut untuk menginstalnya. Contoh dalam artikel ini menggunakan Ubuntu 18.04 LTS dengan server OpenSSH versi 7.6. Namun, instruksinya sama untuk semua distro yang menggunakan versi OpenSSH yang cukup baru.
Pada sistem Linux, instal dan mulai server OpenSSH:
sudo apt install openssh-server sudo service ssh start
Jika Anda ingin server ssh dimulai secara otomatis saat sistem boot, aktifkan menggunakan systemctl:
sudo systemctl enable ssh
Siapkan koneksi jarak jauh
Di Visual Studio, pilih Alat > Opsi pada bilah menu untuk membuka dialog Opsi. Kemudian, pilih Lintas Platform > Pengelola Koneksi untuk membuka dialog Pengelola Koneksi.
Jika Anda belum pernah menyiapkan koneksi di Visual Studio, saat Anda membangun proyek untuk pertama kalinya, Visual Studio akan membuka dialog Pengelola Koneksi untuk Anda.
Dalam dialog Pengelola Koneksi, pilih tombol Tambahkan untuk menambahkan koneksi baru.
Di panel opsi, CrossPlatform > C++ > Pengelola Sambungan dipilih dan tombol Tambahkan disorot.
Untuk mengedit koneksi yang sudah ada, pilih Edit. Dalam skenario mana pun, jendela Hubungkan ke Sistem jarak jauh akan ditampilkan.
Di jendela Sambungkan ke Sistem Jarak Jauh, ada bidang untuk nama host, port, nama pengguna, jenis autentikasi, dan kata sandi. Port diatur ke 22. Jenis autentikasi diatur ke 'Kata Sandi'.
Masukkan informasi berikut:
Entri Deskripsi Nama Host Nama atau alamat IP perangkat target Anda Port Port tempat layanan SSH berjalan, biasanya 22 Nama pengguna Pengguna untuk diautentikasi sebagai Jenis autentikasi Kata sandi dan Kunci Privat didukung Password Kata sandi untuk nama pengguna yang dimasukkan File kunci privat File kunci privat yang dibuat untuk koneksi ssh Frase sandi Frasa sandi yang digunakan dengan kunci privat yang dipilih di atas Anda tidak dapat mengklik tombol Sambungkan hingga semua bidang yang diperlukan selesai dan port diatur ke bilangan bulat antara 1 dan 65535.
Anda dapat menggunakan kata sandi atau file kunci dan frasa sandi untuk autentikasi. File kunci lebih aman daripada nama pengguna/kata sandi. Jika Anda sudah memiliki pasangan kunci, Anda dapat menggunakannya kembali.
Versi Visual Studio sebelum 17.10 mendukung kunci Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), dan Digital signature algorithm (DSA) untuk koneksi jarak jauh. Karena masalah keamanan, kunci RSA dan DSA tidak lagi didukung di VS 17.10 dan yang lebih baru. Hanya kunci EC yang saat ini didukung. Untuk membuat pasangan kunci yang kompatibel dengan pengelola koneksi, gunakan perintah :
ssh-keygen -m pem -t ecdsa -f <key-name>
Catatan
Jika menggunakan
ssh-keygen
untuk membuat kunci privat, Anda harus menentukan sakelar-m pem
, atau kunci tidak akan diterima oleh Visual Studio. Jika kunci privat Anda dimulai dengan-----BEGIN OPENSSH PRIVATE KEY-----
, Anda harus mengonversinya denganssh-keygen -p -f <FILE> -m pem
.Pilih tombol Hubungkan untuk mencoba menyambung ke komputer jarak jauh.
Jika koneksi berhasil, Visual Studio akan mengonfigurasi IntelliSense untuk menggunakan header jarak jauh. Untuk informasi selengkapnya, lihat IntelliSense untuk header pada sistem jarak jauh.
Jika koneksi gagal, bilah info dengan informasi kesalahan muncul dan bidang yang mungkin perlu Anda ubah diuraikan dengan warna merah.
Jika Anda menggunakan file kunci untuk autentikasi, pastikan server SSH komputer target berjalan dan dikonfigurasikan dengan benar.
Jika Anda mengalami kesulitan untuk terhubung ke WSL di
localhost
, lihat Perbaiki masalah koneksilocalhost
WSL.
Verifikasi kunci host
Di Visual Studio versi 16.10 atau yang lebih baru, Anda diminta untuk memverifikasi sidik jari kunci host server setiap kali Visual Studio terhubung ke sistem jarak jauh untuk pertama kalinya. Anda mungkin terbiasa dengan proses ini jika Anda telah menggunakan klien baris perintah OpenSSH atau PuTTY sebelumnya. Sidik jari mengidentifikasi server. Visual Studio menggunakan sidik jari untuk memastikannya terhubung ke server yang dimaksud dan tepercaya.
Pertama kali Visual Studio membuat koneksi jarak jauh baru, Anda diminta untuk menerima atau menolak sidik jari kunci host yang disajikan oleh server. Atau, kapan pun ada perubahan pada sidik jadi yang di-cache. Anda juga dapat memverifikasi sidik jari sesuai permintaan: pilih sebuah koneksi di Pengelola Koneksi, lalu pilih Verifikasi.
Jika Anda memutakhirkan Visual Studio versi yang lebih lama ke Visual Studio 16.10 atau yang lebih baru, Visual Studio baru tersebut akan memperlakukan koneksi jarak jauh yang ada sebagai koneksi baru. Anda diminta untuk menerima sidik jari kunci host terlebih dahulu. Kemudian, Visual Studio akan membuat koneksi dan menyimpan sidik jari yang diterima.
Anda juga dapat memperbarui koneksi jarak jauh dari ConnectionManager.exe
dengan menggunakan argumen update
.
Algoritme SSH yang didukung
Dimulai di Visual Studio versi 16.9, dukungan untuk algoritma SSH yang lebih lama dan tidak aman yang digunakan untuk mengenkripsi data dan kunci pertukaran dihapus. Hanya algoritme berikut yang didukung. Mereka didukung, baik untuk komunikasi SSH klien-ke-server dan server-ke-klien:
Tipe algoritme | Algoritme yang didukung |
---|---|
Enkripsi | aes128-cbc aes128-ctr aes192-cbc aes192-ctr aes256-cbc aes256-ctr |
HMAC | hmac-sha2-256 hmac-sha2-512 |
Pertukaran kunci | diffie-hellman-group14-sha256 diffie-hellman-group16-sha512 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 |
Kunci host | ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 |
Mengonfigurasi server SSH
Pertama, sedikit latar belakang. Anda tidak dapat memilih algoritme SSH untuk digunakan dari Visual Studio. Alih-alih, algoritme ditentukan selama jabat tangan awal dengan server SSH. Setiap sisi (klien dan server) menyediakan daftar algoritme yang didukungnya, kemudian algoritme pertama yang sama di antara keduanya dipilih. Koneksi berhasil selama setidaknya ada satu algoritme yang sama antara Visual Studio dan server untuk enkripsi, HMAC, pertukaran kunci, dan sebagainya.
File konfigurasi Open SSH (sshd_config
) tidak mengonfigurasi algoritme mana yang akan digunakan secara default. Server SSH harus menggunakan default aman saat tidak ada algoritme yang ditentukan. Default tersebut bergantung pada versi dan vendor server SSH. Jika Visual Studio tidak mendukung default tersebut, Anda akan melihat kesalahan seperti: "Tidak dapat terhubung ke sistem jarak jauh. Tidak ditemukan algoritme HMAC klien ke server yang sama." Kesalahan juga dapat muncul jika server SSH dikonfigurasi untuk menggunakan algoritme yang tidak didukung Visual Studio.
Server SSH default pada sebagian besar distribusi Linux modern seharusnya berfungsi dengan Visual Studio. Namun, Anda mungkin menjalankan server SSH lama, yang dikonfigurasikan untuk menggunakan algoritme lama dan tidak aman. Contoh berikut menjelaskan cara memperbarui ke versi yang lebih aman.
Dalam contoh berikut, server SSH menggunakan algoritma yang tidak aman hmac-sha1
, yang tidak didukung Visual Studio 16.9. Jika server SSH menggunakan OpenSSH, Anda dapat mengedit file /etc/ssh/sshd_config
seperti yang ditunjukkan di bawah ini untuk mengaktifkan algoritme yang lebih aman. Untuk server SSH lainnya, lihat dokumentasi server untuk mengetahui cara mengonfigurasinya.
Pertama, verifikasi bahwa kumpulan algoritme yang digunakan server Anda mencakup algoritme yang didukung oleh Visual Studio. Jalankan perintah berikut pada komputer jarak jauh untuk membuat daftar algoritme yang didukung oleh server:
ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key
Perintah tersebut menghasilkan output seperti:
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
...
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
Output tersebut mencantumkan semua enkripsi, HMAC, pertukaran kunci, dan algoritme kunci host yang didukung oleh server SSH Anda. Jika daftar tidak menyertakan algoritma yang didukung oleh Visual Studio, tingkatkan server SSH Anda sebelum melanjutkan.
Anda dapat mengaktifkan algoritme yang didukung oleh Visual Studio dengan mengedit /etc/ssh/sshd_config
pada komputer jarak jauh. Contoh-contoh berikut menunjukkan cara menambahkan berbagai tipe algoritme ke file konfigurasi tersebut.
Contoh-contoh ini dapat ditambahkan di mana saja di /etc/ssh/sshd_config
. Pastikan bahwa mereka berada di jalur mereka masing-masing.
Setelah mengedit file, mulai ulang server SSH (sudo service ssh restart
di Ubuntu) dan coba hubungkan lagi dari Visual Studio.
Contoh cipher
Tambahkan: Ciphers <algorithms to enable>
Misalnya: Ciphers aes128-cbc,aes256-cbc
Contoh HMAC
Tambahkan: MACs <algorithms to enable>
Misalnya: MACs hmac-sha2-256,hmac-sha2-512
Contoh pertukaran kunci
Tambahkan: KexAlgorithms <algorithms to enable>
Misalnya: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384
Contoh kunci host
Tambahkan: HostKeyAlgorithms <algorithms to enable>
Misalnya: HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384
Pengelogan untuk koneksi jarak jauh
Anda dapat mengaktifkan pengelogan untuk membantu memecahkan masalah koneksi. Pada bilah menu, pilih Alat > Opsi. Dalam dialog Opsi, pilih Lintas Platform > Pengelogan:
Opsi ini terbuka untuk Pengelogan lintas platform > Pengelola Sambungan >. Aktifkan pengelogan dicentang, log ke file dicentang, direktori logfile diatur folder dokumen, dan log ke panel 'Pengelogan Lintas Platform' di jendela output dicentang.
Log mencakup koneksi, semua perintah yang dikirim ke komputer jarak jauh (teks, kode keluar, dan waktu eksekusinya), serta semua output dari Visual Studio ke shell. Pengelogan berfungsi untuk proyek CMake lintas platform atau proyek Linux berbasis MSBuild di Visual Studio.
Anda dapat mengonfigurasi output untuk masuk ke file atau ke panel Pengelogan Lintas Platform di jendela Output. Untuk proyek Linux berbasis MSBuild, perintah MSBuild yang dikirim ke komputer jarak jauh tidak dirutekan ke Jendela Output karena dikeluarkan di luar proses. Sebagai gantinya, mereka masuk ke sebuah file dengan awalan "msbuild_".
Utilitas baris perintah untuk Pengelola Koneksi
Visual Studio 2019 versi 16.5 atau yang lebih baru: ConnectionManager.exe
adalah utilitas baris perintah untuk mengelola koneksi pengembangan jarak jauh di luar Visual Studio. Ini berguna untuk tugas-tugas seperti menyediakan mesin pengembangan baru. Atau, Anda dapat menggunakannya untuk menyiapkan integrasi berkelanjutan Visual Studio. Untuk contoh dan referensi lengkap tentang perintah ConnectionManager, lihat Referensi ConnectionManager.
Penerusan Port TCP
Perintah rsync
digunakan oleh proyek Linux berbasis MSBuild dan proyek CMake untuk menyalin header dari sistem jarak jauh Anda ke Windows untuk digunakan oleh IntelliSense. Saat Anda tidak dapat mengaktifkan penerusan port TCP, nonaktifkan pengunduhan otomatis header jarak jauh. Untuk menonaktifkannya, gunakan Alat > Opsi > Lintas Platform > Pengelola Koneksi > Pengelola IntelliSense Header Jarak Jauh. Jika sistem jarak jauh tidak mengaktifkan penerusan port TCP, kesalahan ini muncul saat pengunduhan header jarak jauh untuk IntelliSense dimulai:
rsync
juga digunakan oleh pendukung CMake Visual Studio untuk menyalin file sumber ke sistem jarak jauh. Jika Anda tidak dapat mengaktifkan penerusan port TCP, Anda dapat menggunakan sftp
sebagai metode sumber salinan jarak jauh. sftp
sering kali lebih lambat dari rsync
, tetapi tidak memiliki ketergantungan pada penerusan port TCP. Anda dapat mengelola metode sumber salinan jarak jauh dengan properti remoteCopySourcesMethod
di Editor Pengaturan CMake. Jika penerusan port TCP dinonaktifkan pada sistem jarak jauh Anda, kesalahan muncul di jendela output CMake saat pertama kali memanggil rsync
.
Jendela output mencakup pesan-pesan ini: Verifikasi bahwa penerusan TCP diaktifkan di server, rsync: tidak melihat salam server, kesalahan rsync: kesalahan memulai protokol server klien (kode 5) di main.c(1675) [sender=3.1.3], Saluran SSH tidak dapat dibuka.
gdbserver
dapat digunakan untuk penelusuran kesalahan pada perangkat tertanam. Jika Anda tidak dapat mengaktifkan penerusan port TCP, Anda harus menggunakan gdb
untuk semua skenario penelusuran kesalahan jarak jauh. gdb
digunakan secara default saat melakukan penelusuran kesalahan proyek di sistem jarak jauh.
Pendukung Linux Visual Studio memiliki ketergantungan terhadap penerusan port TCP. Baik rsync
dan gdbserver
terpengaruh jika penerusan port TCP dinonaktifkan pada sistem jarak jauh Anda. Jika ketergantungan ini memengaruhi Anda, pilih tiket saran ini di Komunitas Pengembang.
Hubungkan ke WSL
Pada Visual Studio 2017, Anda menggunakan langkah-langkah yang sama untuk terhubung ke WSL, seperti yang Anda gunakan untuk komputer Linux jarak jauh. Gunakan localhost
untuk Nama Host.
Mulai Visual Studio 2019 versi 16.1, Visual Studio memiliki dukungan asli untuk menggunakan C++ dengan Subsistem Windows untuk Linux (WSL). Artinya, Anda dapat membangun dan men-debug instalasi WSL lokal Anda secara langsung. Anda tidak perlu lagi menambahkan koneksi jarak jauh atau mengonfigurasi SSH. Anda dapat menemukan detail tentang cara menginstal WSL di sini.
Untuk mengonfigurasi instalasi WSL Anda agar berfungsi dengan Visual Studio, Anda perlu menginstal alat berikut : gcc
atau clang
, gdb
, make
, ninja-build
(hanya diperlukan untuk proyek CMake yang menggunakan Visual Studio 2019 versi 16.6 atau yang lebih baru), rsync
, dan zip
. Anda dapat menginstalnya di distro yang menggunakan apt
dengan menggunakan perintah ini, yang juga menginstal kompilator g++:
sudo apt install g++ gdb make ninja-build rsync zip
Perbaiki masalah koneksi localhost
WSL
Saat menghubungkan ke Subsistem Windows untuk Linux (WSL) pada localhost
, Anda mungkin mengalami konflik dengan klien ssh
Windows pada port 22. Di WSL, ubah port yang ssh
mengharapkan permintaan dari menjadi 23 di /etc/ssh/sshd_config
:
Port 23
Jika Anda menghubungkan menggunakan kata sandi, pastikan hal berikut disetel di /etc/ssh/sshd_config
:
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
Setelah membuat perubahan ini, mulai ulang server SSH (sudo service ssh restart
di Ubuntu).
Kemudian, coba lagi koneksi Anda ke localhost
dengan menggunakan port 23.
Untuk informasi selengkapnya, lihat Mengunduh, menginstal, dan menyiapkan beban kerja Linux.
Untuk mengonfigurasi proyek MSBuild untuk WSL, lihat Mengonfigurasi proyek Linux. Untuk mengonfigurasi proyek CMake untuk WSL, lihat Mengonfigurasi proyek CMake Linux. Untuk mengikuti petunjuk langkah-demi-langkah untuk membuat aplikasi konsol sederhana dengan WSL, lihat entri blog pengantar ini di C++ dengan Visual Studio 2019 dan Subsistem Windows untuk Linux (WSL).
Lihat Juga
Mengonfigurasi proyek Linux
Mengonfigurasi proyek CMake Linux
Menyebarkan, menjalankan, dan men-debug proyek Linux Anda
Mengonfigurasi sesi penelusuran kesalahan CMake