Připojení do cílového systému Linux v sadě Visual Studio

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řipojení do 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 ve vzdáleném systému

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.

  1. V systému Linux nainstalujte a spusťte server OpenSSH:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Pokud 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í

  1. V sadě Visual Studio zvolte Možnosti nástrojů > na řádku nabídek a otevřete dialogové okno Možnosti. Potom výběrem správce Připojení ion pro různé platformy > otevřete dialogové okno Připojení ion Manager.

    Pokud jste ještě nenastavili připojení v sadě Visual Studio, při prvním sestavení projektu visual Studio otevře dialogové okno Připojení ion Manager za vás.

  2. V dialogovém okně správce Připojení ion zvolte tlačítko Přidat a přidejte nové připojení.

    Snímek obrazovky s podoknem možností sady Visual Studio

    V podokně možností je vybrána možnost CrossPlatform > C++ > Připojení ion Manager 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řipojení do vzdáleného systému.

    Snímek obrazovky s oknem Připojení sady Visual Studio do vzdáleného systému

    V okně Připojení do vzdáleného 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.

  3. 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
    Heslo Heslo použité s privátním klíčem vybraným výše

    Na tlačítko Připojení nemůžete kliknout, 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. V mnoha vývojových scénářích je ověřování heslem dostatečné, ale klíčové soubory jsou bezpečnější. Pokud už pár klíčů máte, můžete ho znovu použít.

    Verze sady Visual Studio starší než 17.10 podporují klíče EC, RSA a DSA pro vzdálená připojení. Z bezpečnostních důvodů se klíče RSA a DSA už ve VS 17.10 a novějších nepodporují. V současné době se podporují jenom klíče EC. Pokud chcete vytvořit pár klíčů kompatibilní se správcem připojení, použijte příkaz: ssh-keygen -m pem -t ecdsa -f <key-name>

    Poznámka:

    Pokud používáte ssh-keygen k vytvoření privátního klíče, musíte zadat přepínač -m pemnebo klíč nebude přijat sadou Visual Studio. Pokud váš privátní klíč začíná -----BEGIN OPENSSH PRIVATE KEY-----, musíte ho převést na ssh-keygen -p -f <FILE> -m pem.

  4. Zvolte tlačítko Připojení 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 se připojení nezdaří, zobrazí se informační panel s informacemi o chybě a pole, která možná budete muset změnit, jsou zobrazená červeně.

    Snímek obrazovky s oknem Připojení sady Visual Studio do vzdáleného systému Pole názvu hostitele a portu jsou označena červeně a označují nesprávné položky.

    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 onlocalhost, přečtěte si téma Řešení problémů s připojením WSLlocalhost.

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 používá otisk prstu, aby se zajistilo, že se připojuje 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í ve správci Připojení ion 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 update můžete také aktualizovat vzdálená připojeníConnectionManager.exe.

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-cbc
aes128-ctr
aes192-cbc
aes192-ctr
aes256-cbc
aes256-ctr
HMAC hmac-sha2-256
hmac-sha2-512
Výměna klíčů diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
Klíč hostitele ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521

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 následujícím 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 , jak je znázorněno níže, abyste povolili 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 Možnosti nástrojů>. V dialogovém okně Možnosti vyberte Protokolování napříč platformami>:

Snímek obrazovky s možnostmi sady Visual Studio

Možnosti jsou otevřené pro správce > Připojení ion pro různé platformy > protokolování. 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í ionu

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 příkaz Připojení ionManager najdete v tématu Připojení ionManager reference.

Předává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 > Připojení ion Manager Remote Headers IntelliSense Manager>.>> 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:

Snímek obrazovky s chybovou zprávou sady Visual Studio, že se kanál SSH nepodařilo otevřít Je k dispozici cesta k souboru protokolu.

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 CMake Nastavení Editoru. 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.

Snímek obrazovky s oknem výstupu sady Visual Studio zobrazující chybovou zprávu 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. gdbserver To rsync 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í do WSL

V sadě Visual Studio 2017 použijete stejný postup pro připojení k 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ě Subsystém Windows pro Linux (WSL) localhostmůže dojít ke konfliktu s klientem Systému Windows ssh na portu 22. Ve WSL změňte port, který sshoč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).

Viz také

Konfigurace projektu Linux
Konfigurace projektu Linux CMake
Nasazení, spuštění a ladění projektu Linux
Konfigurace ladicích relací CMake