Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Podpora Linuxu je dostupná v sadě Visual Studio 2017 a novějších verzích.
Projekt Linuxu můžete nakonfigurovat tak, aby cílil na vzdálený počítač nebo Subsystém Windows pro Linux (WSL). Pro vzdálené počítače i pro WSL je potřeba nastavit vzdálené připojení v sadě Visual Studio 2017.
Projekt Linuxu můžete nakonfigurovat tak, aby cílil na vzdálený počítač nebo Subsystém Windows pro Linux (WSL). Pro vzdálený počítač je potřeba nastavit vzdálené připojení v sadě Visual Studio. Pokud se chcete připojit k WSL, přeskočte k části Připojit k WSL .
Při použití vzdáleného připojení Visual Studio sestaví projekty C++ Linux na vzdáleném počítači. Nezáleží na tom, jestli se jedná o fyzický počítač, virtuální počítač v cloudu nebo WSL.
Visual Studio pro sestavení projektu zkopíruje zdrojový kód do vzdáleného počítače s Linuxem. Pak se kód zkompiluje na základě nastavení sady Visual Studio.
Poznámka:
Visual Studio 2019 verze 16.5 podporuje zabezpečená kryptografická připojení kompatibilní se standardem FIPS (Federal Information Processing Standard) 140-2 kompatibilní s linuxovými systémy pro vzdálený vývoj. Pokud chcete místo toho použít připojení kompatibilní se standardem FIPS, postupujte podle pokynů v tématu Nastavení zabezpečeného vzdáleného vývoje pro Linux kompatibilní se standardem FIPS.
Nastavení serveru SSH na vzdáleném počítači
Pokud ssh ještě není v systému Linux nastavený a spuštěný, nainstalujte ho podle těchto kroků. Příklady v tomto článku používají Ubuntu 18.04 LTS se serverem OpenSSH verze 7.6. Pokyny by ale měly být stejné pro jakoukoli distribuci pomocí středně nedávné verze OpenSSH.
V systému Linux nainstalujte a spusťte server OpenSSH:
sudo apt install openssh-server sudo service ssh startPokud chcete, aby se server ssh spustil automaticky při spuštění systému, povolte ho pomocí systemctl:
sudo systemctl enable ssh
Nastavení vzdáleného připojení
V sadě Visual Studio v místním systému Windows zvolte Možnosti nástrojů > na řádku nabídek a otevřete tak dialogové okno Možnosti. Potom výběrem > křížové platformy otevřete dialogové okno Správce připojení.
Pokud jste ještě nenastavili připojení v sadě Visual Studio, otevře visual Studio při prvním sestavení projektu dialogové okno Správce připojení za vás.
V dialogovém okně Správce připojení zvolte tlačítko Přidat a přidejte nové připojení.
V podokně možností je vybraný křížový > > Správce připojení C++ a zvýrazněné tlačítko Přidat.
Pokud chcete upravit existující připojení, zvolte Upravit. V obou scénářích se zobrazí okno Připojit ke vzdálenému systému .
V okně Připojit ke vzdálenému systému jsou pole pro název hostitele, port, uživatelské jméno, typ ověřování a heslo. Port je nastavený na hodnotu 22. Typ ověřování je nastavený na Heslo.
Zadejte následující údaje:
Položka Popis Název hostitele Název nebo IP adresa cílového zařízení Port Port, na kterém je služba SSH spuštěná, obvykle 22 Uživatelské jméno Uživatel, který se má ověřit jako Typ ověřování Podporuje se heslo i privátní klíč. Heslo Heslo pro zadané uživatelské jméno Soubor privátního klíče Soubor privátního klíče vytvořený pro připojení ssh Přístupové heslo Přístupové heslo použité s dříve vybraným privátním klíčem Tlačítko Připojit nemůžete vybrat, dokud se nedokončí všechna požadovaná pole a port se nastaví na celé číslo od 1 do 65535.
Pro ověřování můžete použít heslo nebo soubor klíče a heslo. Soubory klíčů jsou bezpečnější než uživatelské jméno a heslo. Pokud už pár klíčů máte, můžete ho znovu použít.
Verze sady Visual Studio před verzí 17.10 podporují klíče Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA) a algoritmus digitálního podpisu (DSA) pro vzdálená připojení. Kvůli obavám z zabezpečení se klíče DSA už ve VS 17.10 a novějších nepodporují. Klíče RSA také nebyly podporovány ve VS 17.10 a VS 17.11, ale některé typy jsou podporovány znovu ve VS 17.12 a novější. Pokud chcete vytvořit pár klíčů kompatibilní se správcem připojení, můžete použít tento příkaz:
ssh-keygen -m pem -t ecdsa -f <key-name>Poznámka:
Pokud používáte
ssh-keygenk vytvoření privátního klíče, musíte zadat přepínač-m pemnebo klíč není v sadě Visual Studio přijat. Pokud váš privátní klíč začíná-----BEGIN OPENSSH PRIVATE KEY-----, musíte ho převést nassh-keygen -p -f <FILE> -m pem.Zvolte tlačítko Připojit a pokuste se o připojení ke vzdálenému počítači.
Pokud připojení proběhne úspěšně, Visual Studio nakonfiguruje Technologii IntelliSense tak, aby používala vzdálená záhlaví. Další informace naleznete v intelliSense pro hlavičky ve vzdálených systémech.
Pokud připojení selže, zobrazí se informační panel s informacemi o chybě a pole, která může být potřeba změnit, jsou zobrazena červeně.
Pokud k ověřování používáte soubory klíčů, ujistěte se, že je server SSH cílového počítače spuštěný a správně nakonfigurovaný.
Pokud máte potíže s připojením ke službě WSL on
localhost, přečtěte si témalocalhostpřipojením WSL.
Ověření klíče hostitele
V sadě Visual Studio verze 16.10 nebo novější se zobrazí výzva k ověření otisku prstu klíče hostitele serveru při prvním připojení sady Visual Studio ke vzdálenému systému. Tento proces možná znáte, pokud jste dříve použili klienta příkazového řádku OpenSSH nebo PuTTY. Otisk prstu identifikuje server. Visual Studio pomocí otisku prstu zajistí, že se připojí k zamýšlenému a důvěryhodnému serveru.
Při prvním navázání nového vzdáleného připojení sady Visual Studio se zobrazí výzva, abyste přijali nebo odepřeli otisk prstu hostitelského klíče prezentovaného serverem. Nebo kdykoli dojde ke změnám otisku prstu uloženého v mezipaměti. Můžete také ověřit otisk prstu na vyžádání: vyberte připojení v Správce připojení a zvolte Ověřit.
Pokud upgradujete na Visual Studio 16.10 nebo novější ze starší verze, považuje všechna existující vzdálená připojení za nová připojení. Nejdřív se zobrazí výzva k přijetí otisku prstu klíče hostitele. Sada Visual Studio pak vytvoří připojení a ukládá přijaté otisky prstu do mezipaměti.
Pomocí argumentu ConnectionManager.exe můžete také aktualizovat vzdálená připojeníupdate.
Podporované algoritmy SSH
Počínaje sadou Visual Studio verze 16.9 se odeberou nezabezpečené algoritmy SSH používané k šifrování dat a klíčů výměny. Podporují se pouze následující algoritmy. Podporují se pro komunikaci SSH mezi klienty a serverem:
| Typ algoritmu | Podporované algoritmy |
|---|---|
| Šifrování | aes128-cbcaes128-ctraes192-cbcaes192-ctraes256-cbcaes256-ctr |
| HMAC | hmac-sha2-256hmac-sha2-512 |
| Výměna klíčů | diffie-hellman-group14-sha256diffie-hellman-group16-sha512diffie-hellman-group-exchange-sha256ecdh-sha2-nistp256ecdh-sha2-nistp384ecdh-sha2-nistp521 |
| Klíč hostitele | ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521rsa-sha2-512rsa-sha2-256 |
Konfigurace serveru SSH
Za prvé, trochu pozadí. V sadě Visual Studio nemůžete vybrat algoritmus SSH. Místo toho se algoritmus určí během počáteční metody handshake se serverem SSH. Každá strana (klient a server) poskytuje seznam algoritmů, které podporuje, a pak je vybrán první algoritmus společný pro oba. Připojení proběhne úspěšně, pokud je mezi sadou Visual Studio a serverem společný alespoň jeden algoritmus pro šifrování, HMAC, výměnu klíčů atd.
Konfigurační soubor Open SSH (sshd_config) nekonfiguruje, který algoritmus se má použít ve výchozím nastavení. Server SSH by měl používat zabezpečené výchozí hodnoty, pokud nejsou zadány žádné algoritmy. Tato výchozí nastavení závisí na verzi a dodavateli serveru SSH. Pokud Visual Studio tyto výchozí hodnoty nepodporuje, pravděpodobně se zobrazí chyba typu: Nelze se připojit ke vzdálenému systému. Nebyl nalezen žádný běžný algoritmus HMAC pro server. Tato chyba se může zobrazit také v případě, že je server SSH nakonfigurovaný tak, aby používal algoritmy, které Visual Studio nepodporuje.
Výchozí server SSH ve většině moderních linuxových distribucí by měl fungovat se sadou Visual Studio. Možná ale používáte starší server SSH, který je nakonfigurovaný tak, aby používal starší nezabezpečené algoritmy. Následující příklad vysvětluje, jak aktualizovat na bezpečnější verze.
V tomto příkladu používá server SSH nezabezpečený hmac-sha1 algoritmus, který Visual Studio 16.9 nepodporuje. Pokud server SSH používá OpenSSH, můžete soubor upravit /etc/ssh/sshd_config a povolit bezpečnější algoritmy. Informace o konfiguraci jiných serverů SSH najdete v dokumentaci k serveru.
Nejprve ověřte, že sada algoritmů, které váš server používá, zahrnuje algoritmy podporované sadou Visual Studio. Spuštěním následujícího příkazu na vzdáleném počítači zobrazte seznam algoritmů podporovaných serverem:
ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key
Příkaz vytvoří výstup, například:
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
...
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
Výstup obsahuje seznam všech algoritmů šifrování, HMAC, výměny klíčů a hostitelských klíčů podporovaných vaším serverem SSH. Pokud seznam neobsahuje algoritmy podporované sadou Visual Studio, před pokračováním upgradujte server SSH.
Algoritmy podporované sadou Visual Studio můžete povolit úpravou /etc/ssh/sshd_config na vzdáleném počítači. Následující příklady ukazují, jak do tohoto konfiguračního souboru přidat různé typy algoritmů.
Tyto příklady lze přidat kamkoli do /etc/ssh/sshd_config. Ujistěte se, že jsou na vlastních řádcích.
Po úpravě souboru restartujte server SSH (sudo service ssh restart na Ubuntu) a zkuste se znovu připojit ze sady Visual Studio.
Příklad šifry
Přidat: Ciphers <algorithms to enable>
Příklad: Ciphers aes128-cbc,aes256-cbc
Příklad HMAC
Přidat: MACs <algorithms to enable>
Příklad: MACs hmac-sha2-256,hmac-sha2-512
Příklad výměny klíčů
Přidat: KexAlgorithms <algorithms to enable>
Příklad: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384
Příklad klíče hostitele
Přidat: HostKeyAlgorithms <algorithms to enable>
Příklad: HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384
Protokolování pro vzdálená připojení
Protokolování vám může pomoct při řešení problémů s připojením. Na řádku nabídek vyberte > nástrojů. V dialogovém okně Možnosti vyberte > napříč platformami:
Možnosti jsou otevřené pro protokolování > Správce připojení > mezi platformami. Je zaškrtnuto políčko Povolit protokolování, je zaškrtnuté přihlášení k souboru, adresář souboru protokolu je nastaven do složky dokumentů a protokol do podokna Protokolování mezi platformami v okně výstupu je zaškrtnuté.
Mezi protokoly patří připojení, všechny příkazy odeslané do vzdáleného počítače (jejich text, ukončovací kód a doba provádění) a všechny výstupy ze sady Visual Studio do prostředí. Protokolování funguje pro jakýkoli projekt CMake pro různé platformy nebo linuxový projekt založený na MSBuildu v sadě Visual Studio.
Výstup můžete nakonfigurovat tak, aby v okně Výstup přešel na soubor nebo do podokna Protokolování napříč platformami. U linuxových projektů založených na MSBuild nejsou příkazy MSBuild odeslané na vzdálený počítač směrovány do okna výstupu, protože se vygenerují mimo proces. Místo toho se protokolují do souboru s předponou msbuild_.
Nástroj příkazového řádku pro Správce připojení
Visual Studio 2019 verze 16.5 nebo novější: ConnectionManager.exe je nástroj příkazového řádku pro správu vzdálených vývojových připojení mimo Visual Studio. Je užitečné pro úlohy, jako je zřízení nového vývojového počítače. Nebo ho můžete použít k nastavení sady Visual Studio pro kontinuální integraci. Příklady a úplný odkaz na ConnectionManager příkaz naleznete v tématu ConnectionManager reference.
Přesměrování portů TCP
Tento rsync příkaz používá projekty Linuxu založené na MSBuildu i projekty CMake ke kopírování hlaviček ze vzdáleného systému do Windows pro použití technologií IntelliSense. Pokud nemůžete povolit přesměrování portů TCP, zakažte automatické stahování vzdálených hlaviček. Pokud ho chcete zakázat, použijte nástroje > Možnosti > pro různé platformy > Správce připojení > Správce technologie IntelliSense pro vzdálené hlavičky. Pokud vzdálený systém nemá povolené přesměrování portů TCP, zobrazí se tato chyba, když začne stahování vzdálených hlaviček pro IntelliSense:
rsync nástroj CMake sady Visual Studio také používá ke kopírování zdrojových souborů do vzdáleného systému. Pokud nemůžete povolit přesměrování portů TCP, můžete použít sftp jako metodu zdrojů vzdáleného kopírování.
sftp je často pomalejší než rsync, ale nemá závislost na přesměrování portů TCP. Metodu remoteCopySourcesMethod vzdálených zdrojů kopírování můžete spravovat pomocí vlastnosti v Editoru nastavení CMake. Pokud je přesměrování portů TCP ve vzdáleném systému zakázané, zobrazí se ve výstupním okně CMake chyba při prvním vyvolání rsync.
Výstupní okno obsahuje tyto zprávy: Ověřte, že je na serveru povolené předávání TCP, rsync: se nezobrazuje pozdrav serveru, chyba rsync: chyba při spuštění protokolu client-server (kód 5) v main.c(1675) [sender=3.1.3], kanál SSH se nedal otevřít.
gdbserver lze použít k ladění na vložených zařízeních. Pokud nemůžete povolit přesměrování portů TCP, musíte ho použít gdb pro všechny scénáře vzdáleného ladění.
gdb používá se ve výchozím nastavení při ladění projektů ve vzdáleném systému.
Podpora sady Visual Studio pro Linux je závislá na přesměrování portů TCP.
rsync To gdbserver platí i v případě, že je přesměrování portů TCP ve vzdáleném systému zakázané. Pokud se tato závislost týká vás, hlasujte pro tento lístek návrhů v komunitě vývojářů.
Připojení k WSL
V sadě Visual Studio 2017 se stejným postupem připojíte ke subsystému Windows pro Linux (WSL), který používáte pro vzdálený počítač s Linuxem. Použije se localhostpro název hostitele.
Počínaje sadou Visual Studio 2019 verze 16.1 má Visual Studio nativní podporu pro používání jazyka C++ s Subsystém Windows pro Linux (WSL). To znamená, že můžete přímo sestavit a ladit místní instalaci WSL. Už nemusíte přidávat vzdálené připojení ani konfigurovat protokol SSH. Podrobnosti o tom, jak nainstalovat WSL , najdete tady.
Pokud chcete nakonfigurovat instalaci WSL tak, aby fungovala se sadou Visual Studio, potřebujete nainstalované následující nástroje: gcc nebo clanggdb, make, ninja-build (vyžaduje se pouze pro projekty CMake pomocí sady Visual Studio 2019 verze 16.6 nebo novější) rsynca zip. Můžete je nainstalovat na distribuce, které používají apt tento příkaz, který také nainstaluje kompilátor g++:
sudo apt install g++ gdb make ninja-build rsync zip
Řešení problémů s připojením WSL localhost
Při připojování ke službě WSL on localhostmůže dojít ke konfliktu s klientem Systému Windows ssh na portu 22. Ve WSL změňte port, který ssh očekává požadavky z na 23 v /etc/ssh/sshd_config:
Port 23
Pokud se připojujete pomocí hesla, ujistěte se, že je nastavená následující hodnota /etc/ssh/sshd_config:
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
Po provedení těchto změn restartujte server SSH (sudo service ssh restart v Ubuntu).
Pak zkuste znovu připojit pomocí localhost portu 23.
Další informace najdete v tématu Stažení, instalace a nastavení linuxové úlohy.
Pokud chcete nakonfigurovat projekt MSBuild pro WSL, přečtěte si téma Konfigurace projektu Linuxu. Pokud chcete nakonfigurovat projekt CMake pro WSL, přečtěte si téma Konfigurace projektu CMake s Linuxem. Pokud chcete postupovat podle podrobných pokynů k vytvoření jednoduché konzolové aplikace pomocí WSL, podívejte se na tento úvodní blogový příspěvek v jazyce C++ se sadou Visual Studio 2019 a Subsystém Windows pro Linux (WSL).