Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Linux-stöd är tillgängligt i Visual Studio 2017 och senare.
Du kan konfigurera ett Linux-projekt för att rikta in sig på en fjärrdator eller Windows-undersystemet för Linux (WSL). För både fjärrdatorer och för WSL måste du konfigurera en fjärranslutning i Visual Studio 2017.
Du kan konfigurera ett Linux-projekt för att rikta in sig på en fjärrdator eller Windows-undersystemet för Linux (WSL). För en fjärrdator måste du konfigurera en fjärranslutning i Visual Studio. Om du vill ansluta till WSL går du vidare till avsnittet Anslut till WSL .
När du använder en fjärranslutning skapar Visual Studio C++ Linux-projekt på fjärrdatorn. Det spelar ingen roll om det är en fysisk dator, en virtuell dator i molnet eller WSL.
För att skapa projektet kopierar Visual Studio källkoden till din fjärranslutna Linux-dator. Sedan kompileras koden baserat på Visual Studio-inställningar.
Anmärkning
Från och med Visual Studio 2019 version 16.5 stöder Visual Studio säkra, FIPS-kompatibla kryptografiska anslutningar (Federal Information Processing Standard) 140-2 till Linux-system för fjärrutveckling. Om du vill använda en FIPS-kompatibel anslutning följer du stegen i Konfigurera FIPS-kompatibel säker linux-utveckling i stället.
Konfigurera SSH-servern på fjärrdatorn
Om ssh inte redan är konfigurerat och körs i Linux-systemet följer du de här stegen för att installera det. Exemplen i den här artikeln använder Ubuntu 18.04 LTS med OpenSSH-serverversion 7.6. Instruktionerna bör dock vara desamma för alla distributioner med hjälp av en måttligt ny version av OpenSSH.
- Installera och starta OpenSSH-servern i Linux-systemet: - sudo apt install openssh-server sudo service ssh start
- Om du vill att ssh-servern ska starta automatiskt när systemet startas aktiverar du det med hjälp av systemctl: - sudo systemctl enable ssh
Konfigurera fjärranslutningen
- I Visual Studio i ditt lokala Windows-system väljer du Verktygsalternativ > på menyraden för att öppna dialogrutan Alternativ. Välj sedan Plattformsoberoende > Anslutningshanterare för att öppna dialogrutan för Anslutningshanteraren. - Om du inte har konfigurerat en anslutning i Visual Studio tidigare öppnar Visual Studio dialogrutan Anslutningshanteraren för dig när du skapar projektet för första gången. 
- I dialogrutan Anslutningshanteraren väljer du knappen Lägg till för att lägga till en ny anslutning.   - I alternativfönstret är CrossPlatform > C++ > Anslutningshanteraren markerat och knappen Lägg till är markerad. - Om du vill redigera en befintlig anslutning väljer du Redigera. I båda scenariona visas fönstret Anslut till fjärrsystem .   - I fönstret Anslut till fjärrsystem finns fält för värdnamn, port, användarnamn, autentiseringstyp och lösenord. Porten är inställd på 22. Autentiseringstypen är inställd på "Lösenord". 
- Ange följande information: - Inträde - Beskrivning - värdnamn - Namn eller IP-adress för målenheten - Hamn - Port som SSH-tjänsten körs på, vanligtvis 22 - Användarnamn - Användare som ska autentiseras som - Autentiseringstyp - Både lösenord och privat nyckel stöds - Lösenord - Lösenord för det angivna användarnamnet - fil med privat nyckel - Privat nyckelfil som skapats för ssh-anslutning - Lösenfras - Lösenfras som används med privat nyckel som valts tidigare - Du kan inte välja knappen Anslut förrän alla obligatoriska fält har slutförts och porten är inställd på ett heltal mellan 1 och 65535. - Du kan använda antingen ett lösenord eller en nyckelfil och lösenfras för autentisering. Nyckelfiler är säkrare än användarnamn/lösenord. Om du redan har ett nyckelpar kan du återanvända det. - Versioner av Visual Studio före 17.10 stöder Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA) och DSA-nycklar (Digital Signature Algorithm) för fjärranslutningar. På grund av säkerhetsproblem stöds inte längre DSA-nycklar i VS 17.10 och senare. RSA-nycklar stöds inte heller i VS 17.10 och VS 17.11, men vissa typer stöds igen i VS 17.12 och senare. Om du vill skapa ett nyckelpar som är kompatibelt med anslutningshanteraren kan du använda kommandot: - ssh-keygen -m pem -t ecdsa -f <key-name>- Anmärkning - Om du använder - ssh-keygenför att skapa den privata nyckeln måste du ange växeln- -m pemeller så godkänns inte nyckeln av Visual Studio. Om din privata nyckel börjar med- -----BEGIN OPENSSH PRIVATE KEY-----måste du konvertera den med- ssh-keygen -p -f <FILE> -m pem.
- Välj knappen Anslut för att försöka ansluta till fjärrdatorn. - Om anslutningen lyckas konfigurerar Visual Studio IntelliSense att använda fjärrrubrikerna. Mer information finns i IntelliSense för rubriker på fjärrsystem. - Om anslutningen misslyckas visas ett informationsfält med felinformation och de fält som du kan behöva ändra visas i rött.   - Om du använder nyckelfiler för autentisering kontrollerar du att måldatorns SSH-server körs och konfigureras korrekt. - Om du har problem med att ansluta till WSL på - localhostkan du läsa Åtgärda WSL-anslutningsproblem- localhost.
Verifiering av värdnyckel
I Visual Studio version 16.10 eller senare uppmanas du att verifiera serverns fingeravtryck för värdnyckeln när Visual Studio ansluter till ett fjärrsystem för första gången. Du kanske är bekant med den här processen om du har använt OpenSSH-kommandoradsklienten eller PuTTY tidigare. Fingeravtrycket identifierar servern. Visual Studio använder fingeravtrycket för att säkerställa att det ansluter till den avsedda och betrodda servern.
Första gången Visual Studio upprättar en ny fjärranslutning uppmanas du att acceptera eller neka fingeravtrycket för värdnyckeln som visas av servern. Eller när som helst det finns ändringar i ett cachelagrat fingeravtryck. Du kan också verifiera ett fingeravtryck på begäran: välj en anslutning i Anslutningshanteraren och välj Verifiera.
Om du uppgraderar till Visual Studio 16.10 eller senare från en äldre version behandlas alla befintliga fjärranslutningar som nya anslutningar. Du uppmanas att acceptera fingeravtrycket för värdnyckeln först. Sedan upprättar Visual Studio en anslutning och cachelagrar det godkända fingeravtrycket.
Du kan också uppdatera fjärranslutningar från ConnectionManager.exe att använda update argumentet .
SSH-algoritmer som stöds
Från och med Visual Studio version 16.9 tas stöd för äldre, osäkra SSH-algoritmer som används för att kryptera data och utbyta nycklar bort. Endast följande algoritmer stöds. De stöds för både klient-till-server- och server-till-klient-SSH-kommunikation:
| Algoritmtyp | Algoritmer som stöds | 
|---|---|
| Kryptering | aes128-cbcaes128-ctraes192-cbcaes192-ctraes256-cbcaes256-ctr | 
| HMAC | hmac-sha2-256hmac-sha2-512 | 
| Nyckelutbyte | diffie-hellman-group14-sha256diffie-hellman-group16-sha512diffie-hellman-group-exchange-sha256ecdh-sha2-nistp256ecdh-sha2-nistp384ecdh-sha2-nistp521 | 
| Värdnyckel | ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521rsa-sha2-512rsa-sha2-256 | 
Konfigurera SSH-servern
Först lite bakgrund. Du kan inte välja den SSH-algoritm som ska användas från Visual Studio. I stället bestäms algoritmen under det första handskakningen med SSH-servern. Varje sida (klient och server) innehåller en lista över algoritmer som stöds och sedan väljs den första algoritmen som är gemensam för båda. Anslutningen lyckas så länge det finns minst en gemensam algoritm mellan Visual Studio och servern för kryptering, HMAC, nyckelutbyte och så vidare.
Öppna SSH-konfigurationsfilen (sshd_config) konfigurerar inte vilken algoritm som ska användas som standard. SSH-servern bör använda säkra standardvärden när inga algoritmer anges. Dessa standardvärden beror på SSH-serverns version och leverantör. Om Visual Studio inte stöder dessa standardvärden ser du förmodligen ett fel som: Det gick inte att ansluta till fjärrsystemet. Ingen vanlig klient till serverns HMAC-algoritm hittades. Felet kan också visas om SSH-servern är konfigurerad för att använda algoritmer som Visual Studio inte stöder.
Standard-SSH-servern på de flesta moderna Linux-distributioner bör fungera med Visual Studio. Du kanske kör en äldre SSH-server som är konfigurerad för att använda äldre, osäkra algoritmer. I följande exempel beskrivs hur du uppdaterar till säkrare versioner.
I det här exemplet använder SSH-servern den osäkra hmac-sha1 algoritmen, som Visual Studio 16.9 inte stöder. Om SSH-servern använder OpenSSH kan du redigera /etc/ssh/sshd_config filen för att aktivera säkrare algoritmer. Andra SSH-servrar finns i serverns dokumentation för hur du konfigurerar dem.
Kontrollera först att den uppsättning algoritmer som servern använder innehåller algoritmer som stöds av Visual Studio. Kör följande kommando på fjärrdatorn för att lista de algoritmer som stöds av servern:
ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key
Kommandot genererar utdata som:
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
...
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
Utdata visar alla krypterings-, HMAC-, nyckelutbytes- och värdnyckelalgoritmer som stöds av din SSH-server. Om listan inte innehåller algoritmer som stöds av Visual Studio uppgraderar du SSH-servern innan du fortsätter.
Du kan aktivera algoritmer som stöds av Visual Studio genom att redigera /etc/ssh/sshd_config på fjärrdatorn. I följande exempel visas hur du lägger till olika typer av algoritmer i konfigurationsfilen.
Dessa exempel kan läggas till var som helst i /etc/ssh/sshd_config. Se till att de är på sina egna linjer.
När du har redigerat filen startar du om SSH-servern (sudo service ssh restart på Ubuntu) och försöker ansluta igen från Visual Studio.
Chifferexempel
Addera: Ciphers <algorithms to enable>
Till exempel: Ciphers aes128-cbc,aes256-cbc
HMAC-exempel
Addera: MACs <algorithms to enable>
Till exempel: MACs hmac-sha2-256,hmac-sha2-512
Exempel på nyckelutbyte
Addera: KexAlgorithms <algorithms to enable>
Till exempel: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384
Exempel på värdnyckel
Addera: HostKeyAlgorithms <algorithms to enable>
Till exempel: HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384
Loggning för fjärranslutningar
Du kan aktivera loggning för att felsöka anslutningsproblem. På menyraden väljer du Verktygsalternativ>. I dialogrutan Alternativ väljer du Plattformsoberoende > loggning:
               
              
            
Alternativen är öppna för plattformsoberoende > Anslutningshanteraren > loggning. Aktivera loggning är markerat, logga till en fil är markerad, loggfilkatalogen har angett dokumentmappen och logga till fönstret "Plattformsoberoende loggning" i utdatafönstret är markerat.
Loggarna omfattar anslutningar, alla kommandon som skickas till fjärrdatorn (deras text, slutkod och körningstid) och alla utdata från Visual Studio till gränssnittet. Loggning fungerar för alla plattformsoberoende CMake-projekt eller MSBuild-baserade Linux-projekt i Visual Studio.
Du kan konfigurera utdata för att gå till en fil eller till fönstret Plattformsoberoende loggning i utdatafönstret. För MSBuild-baserade Linux-projekt dirigeras inte MSBuild-kommandon som skickas till fjärrdatorn till utdatafönstret eftersom de släpps ut ur processen. I stället loggas de till en fil med prefixet msbuild_.
Kommandoradsverktyg för Anslutningshanteraren
              Visual Studio 2019 version 16.5 eller senare: ConnectionManager.exe är ett kommandoradsverktyg för att hantera fjärrutvecklingsanslutningar utanför Visual Studio. Det är användbart för uppgifter som att etablera en ny utvecklingsdator. Du kan också använda den för att konfigurera Visual Studio för kontinuerlig integrering. Exempel och en fullständig referens till kommandot finns i ConnectionManagerConnectionManager-referens.
Vidarebefordran av TCP-port
Kommandot rsync används av både MSBuild-baserade Linux-projekt och CMake-projekt för att kopiera rubriker från fjärrsystemet till Windows för användning av IntelliSense. När du inte kan aktivera TCP-portvidarebefordring inaktiverar du automatisk nedladdning av fjärrhuvuden. Om du vill inaktivera det använder du verktygsalternativen >> Cross Platform > Connection Manager > Remote Headers IntelliSense Manager. Om TCP-portvidarebefordring inte är aktiverat i fjärrsystemet visas det här felet när nedladdningen av fjärrhuvuden för IntelliSense börjar:
              
               
              
              
            
              rsync används också av Stöd för CMake i Visual Studio för att kopiera källfiler till fjärrsystemet. Om du inte kan aktivera TCP-portvidarebefordring kan du använda sftp som fjärrkopieringskällor. 
              sftp är ofta långsammare än rsync, men har inget beroende av TCP-portvidarebefordring. Du kan hantera metoden fjärrkopieringskällor med remoteCopySourcesMethod egenskapen i CMake-inställningsredigeraren. Om TCP-portvidarebefordring är inaktiverat i fjärrsystemet visas ett fel i CMake-utdatafönstret första gången det anropar rsync.
               
              
            
Utdatafönstret innehåller följande meddelanden: Kontrollera att TCP-vidarebefordran är aktiverat på servern, rsync: såg inte serverhälsning, rsync-fel: fel vid start av klient-serverprotokoll (kod 5) på main.c(1675) [sender=3.1.3], Det gick inte att öppna en SSH-kanal.
              gdbserver kan användas för felsökning på inbäddade enheter. Om du inte kan aktivera TCP-portvidarebefordring måste du använda gdb för alla fjärrfelsökningsscenarier. 
              gdb används som standard vid felsökning av projekt i ett fjärrsystem.
Stöd för Visual Studio Linux är beroende av vidarebefordran av TCP-portar. Både rsync och gdbserver påverkas om TCP-portvidarebefordring är inaktiverat i fjärrsystemet. Om det här beroendet påverkar dig kan du rösta på den här förslagsbiljetten i Utvecklarcommunityn.
Ansluta till WSL
I Visual Studio 2017 använder du samma steg för att ansluta till Windows Undersystem för Linux (WSL) som du använder för en fjärransluten Linux-dator. Använd localhost som värdnamn.
Från och med Visual Studio 2019 version 16.1 har Visual Studio inbyggt stöd för att använda C++ med Windows-undersystemet för Linux (WSL). Det innebär att du kan skapa och felsöka den lokala WSL-installationen direkt. Du behöver inte längre lägga till en fjärranslutning eller konfigurera SSH. Du hittar information om hur du installerar WSL här.
För att konfigurera WSL-installationen så att den fungerar med Visual Studio behöver du följande verktyg installerade: gcc eller clang, gdb, ninja-buildmake(krävs endast för CMake-projekt med Visual Studio 2019 version 16.6 eller senare), rsync, och zip. Du kan installera dem på distributioner som använder apt med hjälp av det här kommandot, som även installerar g++-kompilatorn:
sudo apt install g++ gdb make ninja-build rsync zip
Åtgärda problem med WSL-anslutning localhost
När du ansluter till WSL på kan du stöta på localhosten konflikt med Windows-klienten ssh på port 22. I WSL ändrar du porten som ssh förväntar sig begäranden från till 23 i /etc/ssh/sshd_config:
Port 23
Om du ansluter med ett lösenord kontrollerar du att följande anges i /etc/ssh/sshd_config:
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
När du har gjort dessa ändringar startar du om SSH-servern (sudo service ssh restart på Ubuntu).
Försök sedan ansluta igen till localhost med hjälp av port 23.
Mer information finns i Ladda ned, installera och konfigurera Linux-arbetsbelastningen.
Information om hur du konfigurerar ett MSBuild-projekt för WSL finns i Konfigurera ett Linux-projekt. Information om hur du konfigurerar ett CMake-projekt för WSL finns i Konfigurera ett Linux CMake-projekt. Om du vill följa stegvisa instruktioner för att skapa ett enkelt konsolprogram med WSL kan du läsa det här inledande blogginlägget på C++ med Visual Studio 2019 och Windows-undersystemet för Linux (WSL).