Připojení k cílovému 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ř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 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.
V systému Linux nainstalujte a spusťte server OpenSSH:
sudo apt install openssh-server sudo service ssh start
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í
V sadě Visual Studio zvolte > nástrojů na řádku nabídek a otevřete 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 Heslo použité s privátním klíčem vybraným výše Na tlačítko Připojit 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. 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 se také ve VS 17.10 a VS 17.11 nepodporují, ale podporují se znovu ve VS 17.12 a novějších verzích. K vytvoření páru klíčů kompatibilních se správcem připojení můžete použít 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 pem
nebo klíč nebude přijat sadou Visual Studio. 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 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ě.
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émalocalhost
př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 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í 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-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 rsa-sha2-512 rsa-sha2-256 ssh-rsa |
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 > 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 příkaz ConnectionManager naleznete v tématu ConnectionManager 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 > 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 použijete stejný postup pro připojení k WSL, který používáte pro vzdálený počítač s Linuxem. Použije se localhost
pro 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 clang
gdb
, make
, ninja-build
(vyžaduje se pouze pro projekty CMake pomocí sady Visual Studio 2019 verze 16.6 nebo novější) rsync
a 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) localhost
můž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).
Viz také
Konfigurace projektu Linux
Konfigurace projektu Linux CMake
Nasazení, spuštění a ladění projektu Linux
Konfigurace ladicích relací CMake