Visual Studio'da hedef Linux sisteminize bağlanma
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.
Linux sisteminde OpenSSH sunucusunu yükleyin ve başlatın:
sudo apt install openssh-server sudo service ssh start
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
Visual Studio'da, Seçenekler iletişim kutusunu açmak için menü çubuğunda Araçlar Seçenekleri'ni seç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.
Bağlantı Yöneticisi iletişim kutusunda Ekle düğmesini seçerek yeni bir bağlantı ekleyin.
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.
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.
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 pem
gerekir, aksi takdirde anahtar Visual Studio tarafından kabul edilmeyecektir. Özel anahtarınız ile-----BEGIN OPENSSH PRIVATE KEY-----
başlıyorsa, anahtarı ilessh-keygen -p -f <FILE> -m pem
dönüştürmeniz gerekir.Uzak bilgisayara bağlantı kurmayı denemesi 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.
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
localhost
WSL'ye bağlanırken sorun yaşıyorsanız bkz . WSLlocalhost
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_config
herhangi 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
Eklemek: Ciphers <algorithms to enable>
Örneğin: Ciphers aes128-cbc,aes256-cbc
HMAC örneği
Eklemek: MACs <algorithms to enable>
Örneğin: MACs hmac-sha2-256,hmac-sha2-512
Anahtar değişimi örneği
Eklemek: KexAlgorithms <algorithms to enable>
Örneğin: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384
Konak anahtarı örneği
Eklemek: 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:
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 ConnectionManager komutuna tam başvuru için bkz . ConnectionManager 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:
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 rsync
daha yavaştır, ancak TCP bağlantı noktası iletmeye bağımlılığı yoktur. CMake Ayarlar Düzenleyicisi'ndeki özelliğiyle remoteCopySourcesMethod
uzaktan 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 rsync
CMake çıkış penceresinde bir hata görüntülenir.
Çı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ğlanma
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
, make
ninja-build
(yalnızca Visual Studio 2019 sürüm 16.6 veya üzerini kullanan CMake projeleri için gereklidir), rsync
ve .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 localhost
Linux 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_config
olan istekleri bekleyen bağlantı noktasını ssh
değiştirin:
Port 23
Parola kullanarak bağlanıyorsanız, içinde /etc/ssh/sshd_config
aş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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin