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.

  1. Pada sistem Linux, instal dan mulai server OpenSSH:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Jika Anda ingin server ssh dimulai secara otomatis saat sistem boot, aktifkan menggunakan systemctl:

    sudo systemctl enable ssh
    

Siapkan koneksi jarak jauh

  1. 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.

  2. Dalam dialog Pengelola Koneksi, pilih tombol Tambahkan untuk menambahkan koneksi baru.

    Cuplikan layar panel opsi Visual Studio.

    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.

    Cuplikan layar jendela Visual Studio Koneksi ke Sistem Jarak Jauh.

    Di jendela Koneksi 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'.

  3. 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 Koneksi 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. Untuk berbagai skenario pengembangan, autentikasi kata sandi saja sudah cukup, tetapi file kunci lebih aman. Jika Anda sudah memiliki pasangan kunci, Anda dapat menggunakannya kembali.

    Versi Visual Studio sebelum 17.10 mendukung kunci EC, RSA, dan 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 dengan ssh-keygen -p -f <FILE> -m pem.

  4. 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.

    Cuplikan layar jendela Visual Studio Koneksi ke Sistem Jarak Jauh. Nama host dan bidang port diuraikan dengan warna merah untuk menunjukkan entri yang salah.

    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 koneksi localhost 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:

Cuplikan layar opsi Visual Studio.

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:

Cuplikan layar pesan kesalahan Visual Studio bahwa saluran SSH tidak dapat dibuka. Jalur ke file log disediakan.

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.

Cuplikan layar jendela output Visual Studio yang menampilkan pesan Kesalahan 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 tempat ssh biasa menerima permintaan menjadi port 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