Visual Studio'da hedef Linux sisteminize Bağlan

Linux desteği Visual Studio 2017 ve sonraki sürümlerde kullanılabilir.

Bir Linux projesini uzak bir makineyi veya Linux için Windows Alt Sistemi (WSL) hedeflemek için yapılandırabilirsiniz. Hem uzak makineler hem de WSL için Visual Studio 2017'de uzak bağlantı ayarlamanız gerekir.

Bir Linux projesini uzak bir makineyi veya Linux için Windows Alt Sistemi (WSL) hedeflemek için yapılandırabilirsiniz. Uzak bir makine için Visual Studio'da uzak bağlantı ayarlamanız gerekir. WSL'ye bağlanmak için WSL'ye Bağlan bölümüne atlayın.

Uzak bağlantı kullanırken, Visual Studio uzak makinede C++ Linux projeleri oluşturur. Fiziksel bir makine, buluttaki bir sanal makine veya WSL olması fark etmez. Projeyi oluşturmak için Visual Studio kaynak kodu uzak Linux bilgisayarınıza kopyalar. Ardından kod Visual Studio ayarlarına göre derlenir.

Not

Visual Studio 2019 sürüm 16.5'den başlayarak, Visual Studio uzaktan geliştirme için Linux sistemlerine güvenli, Federal Bilgi İşleme Standardı (FIPS) 140-2 uyumlu şifreleme bağlantılarını destekler. FIPS uyumlu bir bağlantı kullanmak için, bunun yerine FIPS uyumlu güvenli uzak Linux geliştirmeyi ayarlama konusundaki adımları izleyin.

Uzak sistemde SSH sunucusunu ayarlama

Linux sisteminizde henüz ayarlanıp çalıştırılmıyorsa ssh , yüklemek için bu adımları izleyin. Bu makaledeki örneklerde OpenSSH sunucu sürümü 7.6 ile Ubuntu 18.04 LTS kullanılır. Ancak, openSSH'nin orta düzeyde yeni bir sürümünü kullanan tüm dağıtımlar için yönergeler aynı olmalıdır.

  1. Linux sisteminde OpenSSH sunucusunu yükleyin ve başlatın:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Sistem ön başlatıldığında ssh sunucusunun otomatik olarak başlatılmasını istiyorsanız systemctl kullanarak etkinleştirin:

    sudo systemctl enable ssh
    

Uzak bağlantıyı ayarlama

  1. Visual Studio'da, Seçenekler iletişim kutusunu açmak için menü çubuğunda Araçlar Seçenekleri'niseçin.> Ardından platformlar > arası Bağlantı Yöneticisi'i seçerek Bağlantı Yöneticisi iletişim kutusunu açın.

    Daha önce Visual Studio'da bağlantı kurmadıysanız, projenizi ilk kez oluştururken Visual Studio sizin için Bağlantı Yöneticisi iletişim kutusunu açar.

  2. Bağlantı Yöneticisi iletişim kutusunda Ekle düğmesini seçerek yeni bir bağlantı ekleyin.

    Visual Studio seçenekleri bölmesinin ekran görüntüsü.

    Seçenekler bölmesinde Çapraz Platform > C++ > Bağlantı Yöneticisi seçilir ve Ekle düğmesi vurgulanır.

    Var olan bir bağlantıyı düzenlemek için Düzenle'yi seçin. Her iki senaryoda da Uzak Sisteme Bağlan penceresi görüntülenir.

    Visual Studio'nun Uzak Sisteme Bağlan penceresinin ekran görüntüsü.

    Uzak Sisteme Bağlan penceresinde konak adı, bağlantı noktası, kullanıcı adı, kimlik doğrulama türü ve parola alanları vardır. Bağlantı noktası 22 olarak ayarlanır. Kimlik doğrulama türü 'Parola' olarak ayarlanır.

  3. Aşağıdaki bilgileri girin:

    Giriş Açıklama
    Ana Bilgisayar Adı Hedef cihazınızın adı veya IP adresi
    Bağlantı noktası SSH hizmetinin üzerinde çalıştığı bağlantı noktası, genellikle 22
    Kullanıcı adı Kimlik doğrulaması için kullanıcı
    Kimlik doğrulaması türü Hem Parola hem de Özel Anahtar desteklenir
    Parola Girilen kullanıcı adı için parola
    Özel anahtar dosyası Ssh bağlantısı için oluşturulan özel anahtar dosyası
    Parola Yukarıda seçilen özel anahtarla kullanılan parola

    Gerekli tüm alanlar tamamlanana ve bağlantı noktası 1 ile 65535 arasında bir tamsayıya ayarlanana kadar Bağlan düğmesine tıklayamazsınız.

    Kimlik doğrulaması için parola veya anahtar dosyası ve parola kullanabilirsiniz. Birçok geliştirme senaryosu için parola kimlik doğrulaması yeterlidir, ancak anahtar dosyalar daha güvenlidir. Zaten bir anahtar çiftine sahipseniz, bunu yeniden kullanabilirsiniz.

    Visual Studio'nun 17.10 öncesi sürümleri uzak bağlantılar için EC, RSA ve DSA anahtarlarını destekler. Güvenlik endişeleri nedeniyle RSA ve DSA anahtarları artık VS 17.10 ve sonraki sürümlerde desteklenmemektedir. Şu anda yalnızca EC anahtarları desteklenmektedir. Bağlantı yöneticisiyle uyumlu bir anahtar çifti oluşturmak için komutunu kullanın: ssh-keygen -m pem -t ecdsa -f <key-name>

    Not

    özel anahtarı oluşturmak için kullanıyorsanız ssh-keygen anahtarını belirtmeniz -m pemgerekir, aksi takdirde anahtar Visual Studio tarafından kabul edilmeyecektir. Özel anahtarınız ile -----BEGIN OPENSSH PRIVATE KEY-----başlıyorsa, anahtarı ile ssh-keygen -p -f <FILE> -m pemdönüştürmeniz gerekir.

  4. Uzak bilgisayarla bağlantı kurmaya çalışmak için Bağlan düğmesini seçin.

    Bağlantı başarılı olursa Visual Studio, IntelliSense'i uzak üst bilgileri kullanacak şekilde yapılandırıyor. Daha fazla bilgi için bkz . Uzak sistemlerdeki üst bilgiler için IntelliSense.

    Bağlantı başarısız olursa, hata bilgilerini içeren bir bilgi çubuğu görüntülenir ve değiştirmeniz gerekebilecek alanlar kırmızıyla gösterilir.

    Visual Studio'nun Uzak Sisteme Bağlan penceresinin ekran görüntüsü. Ana bilgisayar adı ve bağlantı noktası alanları, yanlış girişleri göstermek için kırmızıyla özetlenir.

    Kimlik doğrulaması için anahtar dosyaları kullanıyorsanız hedef makinenin SSH sunucusunun düzgün çalıştığından ve yapılandırıldığından emin olun.

    üzerinde localhostWSL'ye bağlanırken sorun yaşıyorsanız bkz . WSL localhost bağlantı sorunlarını düzeltme.

Konak anahtarı doğrulaması

Visual Studio sürüm 16.10 veya sonraki sürümlerinde, Visual Studio uzak bir sisteme ilk kez bağlandığında sunucunun ana bilgisayar anahtarı parmak izini doğrulamanız istenir. Daha önce OpenSSH komut satırı istemcisini veya PuTTY'yi kullandıysanız bu işlemi biliyor olabilirsiniz. Parmak izi sunucuyu tanımlar. Visual Studio, hedeflenen ve güvenilen sunucuya bağlandığından emin olmak için parmak izini kullanır.

Visual Studio ilk kez yeni bir uzak bağlantı kurduğunda, sunucu tarafından sunulan ana bilgisayar anahtarı parmak izini kabul veya reddetmeniz istenir. Ya da önbelleğe alınmış parmak izinde her değişiklik olduğunda. İsteğe bağlı olarak parmak izini de doğrulayabilirsiniz: Bağlantı Yöneticisi bir bağlantı seçin ve Doğrula'yı seçin.

Daha eski bir sürümden Visual Studio 16.10 veya sonraki bir sürümüne yükseltirseniz, mevcut uzak bağlantılar yeni bağlantılar olarak ele alınıyor. Önce konak anahtarı parmak izini kabul etmek isteyip istemediğiniz sorulur. Ardından Visual Studio bir bağlantı kurar ve kabul edilen parmak izini önbelleğe alır.

Bağımsız değişkenini update kullanarak uzak bağlantıları ConnectionManager.exe da güncelleştirebilirsiniz.

Desteklenen SSH algoritmaları

Visual Studio sürüm 16.9'dan başlayarak, verileri şifrelemek ve anahtarları değiştirmek için kullanılan eski, güvenli olmayan SSH algoritmaları desteği kaldırılır. Yalnızca aşağıdaki algoritmalar desteklenir. Bunlar hem istemciden sunucuya hem de sunucudan istemciye SSH iletişimi için desteklenir:

Algoritma türü Desteklenen algoritmalar
Şifreleme aes128-cbc
aes128-ctr
aes192-cbc
aes192-ctr
aes256-cbc
aes256-ctr
HMAC hmac-sha2-256
hmac-sha2-512
Anahtar değişimi diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
Konak anahtarı ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521

SSH sunucusunu yapılandırma

İlk olarak, biraz arka plan. Visual Studio'dan kullanılacak SSH algoritmasını seçemezsiniz. Bunun yerine algoritma, SSH sunucusuyla ilk el sıkışma sırasında belirlenir. Her iki taraf (istemci ve sunucu) desteklediği algoritmaların listesini sağlar ve her ikisi için de ortak olan ilk algoritma seçilir. Visual Studio ile sunucu arasında şifreleme, HMAC, anahtar değişimi vb. için en az bir algoritma olduğu sürece bağlantı başarılı olur.

Open SSH yapılandırma dosyası (sshd_config), varsayılan olarak hangi algoritmanın kullanılacağını yapılandırmaz. Hiçbir algoritma belirtilmediğinde SSH sunucusu güvenli varsayılanları kullanmalıdır. Bu varsayılanlar SSH sunucusunun sürümüne ve satıcısına bağlıdır. Visual Studio bu varsayılanları desteklemiyorsa büyük olasılıkla şöyle bir hata görürsünüz: "Uzak sisteme bağlanılamadı. Sunucu HMAC algoritması için ortak istemci bulunamadı." SSH sunucusu Visual Studio'nun desteklemediği algoritmaları kullanacak şekilde yapılandırılmışsa da hata görüntülenebilir.

Modern Linux dağıtımlarının çoğunda varsayılan SSH sunucusu Visual Studio ile birlikte çalışmalıdır. Ancak, daha eski ve güvenli olmayan algoritmalar kullanmak üzere yapılandırılmış eski bir SSH sunucusu çalıştırıyor olabilirsiniz. Aşağıdaki örnekte, daha güvenli sürümlere nasıl güncelleştirilecekleri açıklanmaktadır.

Aşağıdaki örnekte SSH sunucusu, Visual Studio 16.9'un desteklemediği güvenli hmac-sha1 olmayan algoritmayı kullanır. SSH sunucusu OpenSSH kullanıyorsa, daha güvenli algoritmaları etkinleştirmek için dosyayı aşağıda gösterildiği gibi düzenleyebilirsiniz /etc/ssh/sshd_config . Diğer SSH sunucuları için, bunları yapılandırmaya yönelik sunucu belgelerine bakın.

İlk olarak, sunucunuzun kullandığı algoritma kümesinin Visual Studio tarafından desteklenen algoritmalar içerdiğini doğrulayın. Sunucu tarafından desteklenen algoritmaları listelemek için uzak makinede aşağıdaki komutu çalıştırın:

ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key

komutu aşağıdaki gibi bir çıkış oluşturur:

3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
...
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com

Çıktıda SSH sunucunuz tarafından desteklenen tüm şifreleme, HMAC, anahtar değişimi ve konak anahtar algoritmaları listelenir. Listede Visual Studio tarafından desteklenen algoritmalar yoksa devam etmeden önce SSH sunucunuzu yükseltin.

Uzak makinede düzenleme /etc/ssh/sshd_config yaparak Visual Studio tarafından desteklenen algoritmaları etkinleştirebilirsiniz. Aşağıdaki örneklerde, bu yapılandırma dosyasına çeşitli algoritma türlerinin nasıl ekleneceği gösterilmektedir.

Bu örnekler içinde /etc/ssh/sshd_configherhangi bir yere eklenebilir. Kendi hatlarında olduklarından emin olun.

Dosyayı düzenledikten sonra, SSH sunucusunu (sudo service ssh restart Ubuntu'da) yeniden başlatın ve Visual Studio'dan yeniden bağlanmayı deneyin.

Şifre örneği

Ekle: Ciphers <algorithms to enable>
Örneğin: Ciphers aes128-cbc,aes256-cbc

HMAC örneği

Ekle: MACs <algorithms to enable>
Örneğin: MACs hmac-sha2-256,hmac-sha2-512

Anahtar değişimi örneği

Ekle: KexAlgorithms <algorithms to enable>
Örneğin: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384

Konak anahtarı örneği

Ekle: HostKeyAlgorithms <algorithms to enable>
Örneğin: HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384

Uzak bağlantılar için günlüğe kaydetme

Bağlantı sorunlarını gidermeye yardımcı olması için günlüğü etkinleştirebilirsiniz. Menü çubuğunda Araçlar > Seçenekleri'ni seçin. Seçenekler iletişim kutusunda Platformlar > Arası Günlük Kaydı'nı seçin:

Visual Studio seçenekleri ekranının ekran görüntüsü.

Seçenekler Platformlar Arası > Bağlantı Yöneticisi > Günlüğü'ne açıktır. Günlüğe kaydetmeyi etkinleştir işaretlenir, bir dosyada oturum açılır, logfile dizini belgeler klasörü ayarlanır ve çıkış penceresindeki 'Platformlar Arası Günlüğe Kaydetme' bölmesine oturum açılır.

Günlükler arasında bağlantılar, uzak makineye gönderilen tüm komutlar (metin, çıkış kodu ve yürütme süresi) ve Visual Studio'dan kabuğa giden tüm çıkışlar bulunur. Günlüğe kaydetme, Visual Studio'daki tüm platformlar arası CMake projelerinde veya MSBuild tabanlı Linux projelerinde çalışır.

Çıktıyı bir dosyaya veya Çıkış penceresinde platformlar arası günlüğe kaydetme bölmesine gidecek şekilde yapılandırabilirsiniz. MSBuild tabanlı Linux projelerinde, uzak makineye gönderilen MSBuild komutları işlem dışı bırakıldıklarından Çıkış Penceresi'ne yönlendirilmez. Bunun yerine, "msbuild_" ön ekiyle bir dosyaya kaydedilirler.

Bağlantı Yöneticisi için komut satırı yardımcı programı

Visual Studio 2019 sürüm 16.5 veya üzeri: ConnectionManager.exe Visual Studio dışındaki uzaktan geliştirme bağlantılarını yönetmek için bir komut satırı yardımcı programıdır. Yeni bir geliştirme makinesi sağlama gibi görevler için kullanışlıdır. Alternatif olarak, Visual Studio'yu sürekli tümleştirme için ayarlamak için de kullanabilirsiniz. örnekler ve Bağlan ionManager komutuna tam başvuru için bkz. Bağlan ionManager başvurusu.

TCP Bağlantı Noktası İletme

Komutu rsync hem MSBuild tabanlı Linux projeleri hem de CMake projeleri tarafından intelliSense tarafından kullanılmak üzere uzak sisteminizden Windows'a üst bilgileri kopyalamak için kullanılır. TCP bağlantı noktası iletmeyi etkinleştiremezseniz, uzak üst bilgilerin otomatik olarak indirilmesini devre dışı bırakın. Devre dışı bırakmak için, Uzak Üst Bilgiler IntelliSense Yöneticisi Bağlantı Yöneticisi Platformlar > Arası Araçlar > Seçenekleri'ni > kullanın. > Uzak sistemde TCP bağlantı noktası iletme etkin değilse, IntelliSense için uzak üst bilgileri indirme işlemi başladığında bu hata görüntülenir:

SSH kanalının açılamadığını belirten Visual Studio hata iletisinin ekran görüntüsü. Günlük dosyasının yolu sağlanır.

rsync , kaynak dosyaları uzak sisteme kopyalamak için Visual Studio'nun CMake desteği tarafından da kullanılır. TCP bağlantı noktası iletmeyi etkinleştiremiyorsanız, uzak kopyalama kaynakları yönteminiz olarak kullanabilirsiniz sftp . sftp genellikle değerinden rsyncdaha yavaştır, ancak TCP bağlantı noktası iletmeye bağımlılığı yoktur. CMake Ayarlar Düzenleyicisi'ndeki özelliğiyle remoteCopySourcesMethod uzak kopyalama kaynakları yönteminizi yönetebilirsiniz. Uzak sisteminizde TCP bağlantı noktası iletme devre dışı bırakılırsa, ilk kez çağrıldığında rsyncCMake çıkış penceresinde bir hata görüntülenir.

Rsync Hata iletisini görüntüleyen Visual Studio çıkış penceresinin ekran görüntüsü.

Çıkış penceresi şu iletileri içerir: Sunucuda TCP iletmenin etkinleştirildiğini doğrulayın, rsync: sunucu karşılamasını görmedi, rsync hatası: main.c(1675) [sender=3.1.3] adresinde istemci-sunucu protokolü (kod 5) başlatılırken hata oluştu, SSH kanalı açılamadı.

gdbserver ekli cihazlarda hata ayıklama için kullanılabilir. TCP bağlantı noktası iletmeyi etkinleştiremiyorsanız, tüm uzaktan hata ayıklama senaryoları için kullanmanız gdb gerekir. gdb , uzak bir sistemdeki projelerde hata ayıklarken varsayılan olarak kullanılır.

Visual Studio'nun Linux desteği tcp bağlantı noktası iletmeye bağımlıdır. gdbserver Uzak sisteminizde TCP bağlantı noktası iletme devre dışı bırakılırsa hem hem de rsync etkilenir. Bu bağımlılık sizi etkiliyorsa, Geliştirici Topluluğu bu öneri bileti için oy verin.

WSL'ye Bağlan

Visual Studio 2017'de, WSL'ye bağlanmak için uzak bir Linux makinesinde kullandığınız adımların aynısını kullanırsınız. Konak Adı için kullanınlocalhost.

Visual Studio 2019 sürüm 16.1'den başlayarak Visual Studio, Linux için Windows Alt Sistemi (WSL) ile C++ kullanmak için yerel desteğe sahiptir. Bu, yerel WSL yüklemenizde doğrudan derleme ve hata ayıklama yapabileceğiniz anlamına gelir. Artık uzak bağlantı eklemeniz veya SSH'yi yapılandırmanız gerekmez. WSL'nin nasıl yükleneceğiyle ilgili ayrıntıları burada bulabilirsiniz.

WSL yüklemenizi Visual Studio ile çalışacak şekilde yapılandırmak için şu araçların yüklü olması gerekir: gcc veya clang, gdb, makeninja-build (yalnızca Visual Studio 2019 sürüm 16.6 veya üzerini kullanan CMake projeleri için gereklidir), rsyncve .zip Bunları, g++ derleyicisini de yükleyen şu komutu kullanarak kullanan apt dağıtımlara yükleyebilirsiniz:

sudo apt install g++ gdb make ninja-build rsync zip

WSL localhost bağlantı sorunlarını düzeltme

üzerinde localhostLinux için Windows Alt Sistemi 'a (WSL) bağlanırken, 22 numaralı bağlantı noktasında Windows ssh istemcisiyle çakışmayla karşılaşabilirsiniz. WSL'de, içinde 23 /etc/ssh/sshd_configolan istekleri bekleyen bağlantı noktasını sshdeğiştirin:

Port 23

Parola kullanarak bağlanıyorsanız, içinde /etc/ssh/sshd_configaşağıdakilerin ayarlandığından emin olun:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes

Bu değişiklikleri yaptıktan sonra SSH sunucusunu (sudo service ssh restart Ubuntu'da) yeniden başlatın.

Ardından 23 numaralı bağlantı noktasını kullanarak bağlantınızı localhost yeniden deneyin.

Daha fazla bilgi için bkz . Linux iş yükünü indirme, yükleme ve ayarlama.

WSL için MSBuild projesi yapılandırmak için bkz . Linux projesi yapılandırma. WSL için bir CMake projesi yapılandırmak için bkz . Linux CMake projesi yapılandırma. WSL ile basit bir konsol uygulaması oluşturmaya yönelik adım adım yönergeleri izlemek için Visual Studio 2019 ve Linux için Windows Alt Sistemi (WSL) ile C++ ile ilgili bu giriş niteliğindeki blog gönderisine göz atın.

Ayrıca bkz:

Linux projesi yapılandırma
Linux CMake projesi yapılandırma
Linux projenizi dağıtma, çalıştırma ve projenizin hatalarını ayıklama
CMake hata ayıklama oturumlarını yapılandırma