Megosztás:


Csatlakozás távoli Linux-rendszerhez a Visual Studióval

A Linux-támogatás a Visual Studio 2017-ben és újabb verzióiban érhető el.

Linux-projektet úgy konfigurálhat, hogy egy távoli gépet vagy a Linux windowsos alrendszerét (WSL) célozza meg. A távoli gépekhez és a WSL-hez is távoli kapcsolatot kell beállítania a Visual Studio 2017-ben.

Linux-projektet úgy konfigurálhat, hogy egy távoli gépet vagy a Linux windowsos alrendszerét (WSL) célozza meg. Távoli gép esetén távoli kapcsolatot kell beállítania a Visual Studióban. A WSL-hez való csatlakozáshoz ugorjon tovább a Csatlakozás a WSL-hez szakaszhoz.

Távoli kapcsolat használata esetén a Visual Studio C++ Linux-projekteket készít a távoli gépen. Nem számít, hogy fizikai gépről, felhőbeli virtuális gépről vagy WSL-ről van-e szó.

A projekt létrehozásához a Visual Studio a forráskódot a távoli Linux-számítógépre másolja. Ezután a kód a Visual Studio beállításai alapján lesz lefordítva.

Jegyzet

A Visual Studio 2019 16.5-ös verziójától kezdve a Visual Studio támogatja a biztonságos, Federal Information Processing Standard (FIPS) 140-2 szabványnak megfelelő titkosítási kapcsolatokat Linux rendszerekhez távoli fejlesztés céljából. FIPS-kompatibilis kapcsolat használatához kövesse inkább a FIPS-kompatibilis biztonságos távoli Linux-fejlesztési környezet beállításának lépéseit.

Az SSH-kiszolgáló beállítása a távoli gépen

Ha ssh még nincs beállítva és fut a Linux rendszeren, a telepítéshez kövesse az alábbi lépéseket. A cikkben szereplő példák az Ubuntu 18.04 LTS-t használják az OpenSSH-kiszolgáló 7.6-os verziójával. Az Utasításoknak azonban meg kell egyeznie minden olyan disztribúció esetében, amely az OpenSSH mérsékelten friss verzióját használja.

  1. Linux rendszeren telepítse és indítsa el az OpenSSH-kiszolgálót:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. Ha azt szeretné, hogy az ssh-kiszolgáló automatikusan elinduljon a rendszer indításakor, engedélyezze a systemctl használatával:

    sudo systemctl enable ssh
    

A távoli kapcsolat beállítása

  1. A Helyi Windows rendszer Visual Studiójában válassza a menüsáv Eszközök > beállításai elemét a Beállítások párbeszédpanel megnyitásához. Ezután válassza Platformfüggetlen > Kapcsolatkezelő lehetőséget a Kapcsolatkezelő párbeszédpanel megnyitásához.

    Ha korábban még nem állított be kapcsolatot a Visual Studióban, a projekt első létrehozásakor a Visual Studio megnyitja Önnek a Connection Manager párbeszédpanelt.

  2. A Kapcsolatkezelő párbeszédpanelen válassza a hozzáadása gombot új kapcsolat hozzáadásához.

    Képernyőkép a Visual Studio beállításai panelről.

    A Beállítások panelen a CrossPlatform > C++ > Connection Manager van kiválasztva, és a Hozzáadás gomb ki van emelve.

    Meglévő kapcsolat szerkesztéséhez válassza a Szerkesztéslehetőséget. Mindkét esetben megjelenik a Csatlakozás távoli rendszerhez ablak.

    Képernyőkép a Visual Studio Connect to Remote System ablakról.

    A Csatlakozás távoli rendszerhez ablakban a gazdagép neve, a port, a felhasználónév, a hitelesítési típus és a jelszó mezői találhatók. A port értéke 22. A hitelesítési típus "Jelszó" értékre van állítva.

  3. Adja meg a következő adatokat:

    Bejegyzés Leírás
    állomásnév A céleszköz neve vagy IP-címe
    port Port, amelyen az SSH szolgáltatás fut, általában 22
    felhasználónév Hitelesítést végző felhasználó
    Hitelesítési típus A jelszó és a titkos kulcs egyaránt támogatott
    jelszó A megadott felhasználónév jelszava
    titkos kulcsfájl SSH-kapcsolathoz létrehozott titkos kulcsfájl
    jelszó A korábban kiválasztott titkos kulccsal használt jelszó

    A Csatlakozás gombot csak akkor választhatja ki, ha az összes szükséges mező be nem fejeződik, és a port értéke 1 és 65535 közötti egész szám.

    A hitelesítéshez használhat jelszót vagy kulcsfájlt és jelszót. A kulcsfájlok biztonságosabbak, mint a felhasználónév/jelszó. Ha már van kulcspárja, újra felhasználhatja.

    A Visual Studio 17.10 előtti verziói támogatják az Elliptikus Görbe (EC), a Rivert-Shamir-Adleman (RSA) és a digitális aláírási algoritmus (DSA) kulcsait a távoli kapcsolatokhoz. Biztonsági okokból a DSA-kulcsok már nem támogatottak a VS 17.10-ben és újabb verzióiban. Az RSA-kulcsok a VS 17.10-ben és a VS 17.11-ben sem támogatottak, de egyes típusok a VS 17.12-ben és újabb verziókban is támogatottak. A kapcsolatkezelővel kompatibilis kulcspár létrehozásához használja a következő parancsot: ssh-keygen -m pem -t ecdsa -f <key-name>

    Jegyzet

    Ha a titkos kulcs létrehozásához használja ssh-keygen , meg kell adnia a kapcsolót -m pem, vagy a Visual Studio nem fogadja el a kulcsot. Ha a privát kulcsa -----BEGIN OPENSSH PRIVATE KEY------zal kezdődik, akkor azt ssh-keygen -p -f <FILE> -m pem-gyel kell konvertálnia.

  4. A távoli számítógéphez való csatlakozáshoz válassza a Csatlakozás gombot.

    Ha a kapcsolat sikeres, a Visual Studio konfigurálja az IntelliSense-t a távoli fejlécek használatára. További információért lásd a IntelliSense a távoli rendszerek fejléceire vonatkozó részleteket.

    Ha a kapcsolat meghiúsul, megjelenik egy hibainformációt tartalmazó információs sáv, és a módosítani kívánt mezők pirossal jelennek meg.

    Képernyőkép a Visual Studio Connect to Remote System ablakról. A gazdagépnév és a portmezők piros színnel vannak keretezve, jelezve a helytelen bejegyzéseket.

    Ha kulcsfájlokat használ a hitelesítéshez, győződjön meg arról, hogy a célgép SSH-kiszolgálója megfelelően fut és konfigurálva van.

    Ha nem tud csatlakozni a WSL-hez localhost, olvassa el A WSL localhost kapcsolati problémáinak kijavítása.

Gazdagépkulcs ellenőrzése

A Visual Studio 16.10-es vagy újabb verziójában a rendszer arra kéri, hogy ellenőrizze a kiszolgáló gazdakulcsának ujjlenyomatát, amikor a Visual Studio először csatlakozik egy távoli rendszerhez. Ha korábban már használta az OpenSSH parancssori ügyfelet vagy a PuTTY-t, akkor lehet, hogy ismeri ezt a folyamatot. Az ujjlenyomat azonosítja a kiszolgálót. A Visual Studio az ujjlenyomattal biztosítja, hogy a kívánt és megbízható kiszolgálóhoz csatlakozzon.

Amikor a Visual Studio először hoz létre új távoli kapcsolatot, a rendszer felkéri, hogy fogadja el vagy tiltsa le a kiszolgáló által bemutatott gazdakulcs ujjlenyomatát. Amikor változások történnek a gyorsítótárban tárolt ujjlenyomaton. Kérheti az ujjlenyomat ellenőrzését is: válasszon ki egy kapcsolatot a Connection Manager alkalmazásban, majd válassza az Ellenőrzéslehetőséget.

Ha egy régebbi verzióról frissít a Visual Studio 16.10-es vagy újabb verziójára, a meglévő távoli kapcsolatokat új kapcsolatként kezeli. A rendszer először a gazdakulcs ujjlenyomatának elfogadását kéri. Ezután a Visual Studio létrehoz egy kapcsolatot, és gyorsítótárazza az elfogadott ujjlenyomatot.

A távoli kapcsolatokat a ConnectionManager.exe használatával is frissítheti a update argumentum.

Támogatott SSH-algoritmusok

A Visual Studio 16.9-es verziójától kezdve a rendszer eltávolítja az adatok titkosításához és a kulcsok cseréjéhez használt régebbi, nem biztonságos SSH-algoritmusok támogatását. Csak a következő algoritmusok támogatottak. Az ügyfelek közötti és a kiszolgáló–ügyfél SSH-kommunikáció esetében is támogatottak:

Algoritmus típusa Támogatott algoritmusok
Titkosítás aes128-cbc
aes128-ctr
aes192-cbc
aes192-ctr
aes256-cbc
aes256-ctr
HMAC hmac-sha2-256
hmac-sha2-512
Kulcscsere diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
Hosztkulcs ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
rsa-sha2-512
rsa-sha2-256

Az SSH-kiszolgáló konfigurálása

Először is, egy kis háttér. A Visual Studióban nem választhatja ki a használni kívánt SSH-algoritmust. Ehelyett az algoritmus az SSH-kiszolgálóval folytatott kezdeti kézfogás során lesz meghatározva. Minden oldal (ügyfél és kiszolgáló) felsorolja az általa támogatott algoritmusokat, majd kiválasztja a mindkettőre jellemző első algoritmust. A kapcsolat akkor sikeres, ha legalább egy algoritmus közös a Visual Studio és a kiszolgáló között a titkosításhoz, a HMAC-hoz, a kulcscseréhez stb.

Az Open SSH konfigurációs fájl (sshd_config) nem konfigurálja alapértelmezés szerint a használni kívánt algoritmust. Az SSH-kiszolgálónak biztonságos alapértelmezett értékeket kell használnia, ha nincsenek megadva algoritmusok. Ezek az alapértelmezett értékek az SSH-kiszolgáló verziójától és gyártójától függnek. Ha a Visual Studio nem támogatja ezeket az alapértelmezett beállításokat, valószínűleg a következőhöz hasonló hibaüzenet jelenik meg: Nem sikerült csatlakozni a távoli rendszerhez. Nem található gyakori ügyfél–kiszolgáló HMAC algoritmus. A hiba akkor is megjelenhet, ha az SSH-kiszolgáló olyan algoritmusok használatára van konfigurálva, amelyeket a Visual Studio nem támogat.

A legtöbb modern Linux-disztribúció alapértelmezett SSH-kiszolgálójának működnie kell a Visual Studióval. Előfordulhat azonban, hogy egy régebbi SSH-kiszolgálót futtat, amely régebbi, nem biztonságos algoritmusok használatára van konfigurálva. Az alábbi példa bemutatja, hogyan frissíthet biztonságosabb verziókra.

Ebben a példában az SSH-kiszolgáló a nem biztonságos hmac-sha1 algoritmust használja, amelyet a Visual Studio 16.9 nem támogat. Ha az SSH-kiszolgáló OpenSSH-t használ, szerkesztheti a fájlt a /etc/ssh/sshd_config biztonságosabb algoritmusok engedélyezéséhez. Más SSH-kiszolgálók esetén tekintse meg a kiszolgáló konfigurálására vonatkozó dokumentációt.

Először ellenőrizze, hogy a kiszolgáló által használt algoritmusok közé tartoznak-e a Visual Studio által támogatott algoritmusok. Futtassa a következő parancsot a távoli gépen a kiszolgáló által támogatott algoritmusok listázásához:

ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key

A parancs a következő kimenetet hozza létre:

3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
...
ecdsa-sha2-nistp521-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com

A kimenet felsorolja az SSH-kiszolgáló által támogatott összes titkosítási, HMAC-, kulcscsere- és gazdakulcs-algoritmust. Ha a lista nem tartalmazza a Visual Studio által támogatott algoritmusokat, a folytatás előtt frissítse az SSH-kiszolgálót.

A Visual Studio által támogatott algoritmusokat a távoli gépen /etc/ssh/sshd_config szerkesztésével engedélyezheti. Az alábbi példák bemutatják, hogyan adhat hozzá különböző típusú algoritmusokat a konfigurációs fájlhoz.

Ezeket a példákat bárhol hozzá lehet adni a /etc/ssh/sshd_config-ban. Győződjön meg arról, hogy külön sorokon vannak.

A fájl szerkesztése után indítsa újra az SSH-kiszolgálót (sudo service ssh restart az Ubuntu-on), és próbáljon meg újra csatlakozni a Visual Studióból.

Rejtjel példa

Hozzáadás: Ciphers <algorithms to enable>
Például: Ciphers aes128-cbc,aes256-cbc

Példa HMAC-ra

Hozzáadás: MACs <algorithms to enable>
Például: MACs hmac-sha2-256,hmac-sha2-512

Példa kulcscserére

Hozzáadás: KexAlgorithms <algorithms to enable>
Például: KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384

Példa hosztkulcsra

Hozzáadás: HostKeyAlgorithms <algorithms to enable>
Például: HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384

Távoli kapcsolatok naplózása

Engedélyezheti a naplózást a kapcsolati problémák elhárításához. A menüsávon válassza az Eszközök > Beállításoklehetőséget. A Beállítások párbeszédpanelen válassza ki a platformfüggetlen > naplózási lehetőséget.

Képernyőkép a Visual Studio beállításainak képernyőről.

A lehetőségek platformfüggetlen > Connection Manager > naplózására használhatók. A naplózás engedélyezése be van jelölve, a fájlba való bejelentkezés be van jelölve, a naplófájl könyvtára be van állítva a dokumentumok mappájába, és a kimeneti ablakban a "Platformfüggetlen naplózás" panelre jelentkezik be.

A naplók tartalmazzák a kapcsolatokat, a távoli gépre küldött összes parancsot (a szövegüket, a kilépési kódot és a végrehajtási időt), valamint a Visual Studióból a rendszerhéjba küldött összes kimenetet. A naplózás minden platformfüggetlen CMake-projekthez vagy MSBuild-alapú Linux-projekthez használható a Visual Studióban.

Konfigurálhatja a kimenetet úgy, hogy egy fájlhoz vagy a platformfüggetlen naplózási panelre lépjen a Kimenet ablakban. MSBuild-alapú Linux-projektek esetén a távoli gépre küldött MSBuild parancsok nem lesznek átirányítva a kimeneti ablakba, mert a rendszer folyamaton kívül bocsátja ki őket. Ehelyett a rendszer msbuild_ előtaggal naplózza őket egy fájlba.

Parancssori segédprogram a Connection Managerhez

Visual Studio 2019 16.5-ös vagy újabb verziójú: a ConnectionManager.exe parancssori segédprogram a Visual Studión kívüli távoli fejlesztési kapcsolatok kezelésére. Olyan feladatokhoz hasznos, mint egy új fejlesztőgép kiépítése. Vagy használhatja a Visual Studiót a folyamatos integrációhoz. Példák és a ConnectionManager parancs teljes hivatkozása megtalálható itt: ConnectionManager hivatkozás.

TCP-porttovábbítás

Az rsync parancsot MSBuild-alapú Linux-projektek és CMake-projektek is használják a távoli rendszerről a fejlécek Windows rendszerre való másolásához, hogy használhatóak legyenek az IntelliSense-ben. Ha nem tudja engedélyezni a TCP-porttovábbítást, tiltsa le a távoli fejlécek automatikus letöltését. Letiltásához használja Eszközök > Beállítások > Platformközi > Kapcsolatkezelő > Távoli fejlécek IntelliSense Manager. Ha a távoli rendszer nem engedélyezi a TCP-porttovábbítást, ez a hiba akkor jelenik meg, amikor megkezdődik az IntelliSense távoli fejléceinek letöltése:

Képernyőkép egy Visual Studio-hibaüzenetről, amely szerint az SSH-csatorna nem nyitható meg. Meg van adva a naplófájl elérési útja.

rsync-t a Visual Studio CMake támogatásában is használják arra, hogy a forrásfájlokat a távoli rendszerre másolják. Ha nem tudja engedélyezni a TCP-porttovábbítást, használhatja a sftp távoli másolási forrásként. sftp gyakran lassabb, mint rsync, de nem függ a TCP-port továbbításától. A távoli másolási források metódusát a remoteCopySourcesMethod tulajdonságával kezelheti. Ha a TCP-porttovábbítás le van tiltva a távoli rendszeren, hiba jelenik meg a CMake kimeneti ablakban, amikor először hívja meg rsync.

Képernyőkép a Visual Studio kimeneti ablakáról, amely egy Rsync-hibaüzenetet jelenít meg.

A kimeneti ablak a következő üzeneteket tartalmazza: Ellenőrizze, hogy a TCP-továbbítás engedélyezve van-e a kiszolgálón, rsync: nem jelenik meg a kiszolgáló üdvözlése, rsync hiba: hiba az ügyfél-kiszolgáló protokoll indításakor (5-ös kód) a main.c(1675) [sender=3.1.3] címen, az SSH-csatorna nem nyitható meg.

gdbserver használható beágyazott eszközökön végzett hibakereséshez. Ha nem tudja engedélyezni a TCP-portok továbbítását, akkor minden távoli hibakeresési forgatókönyvhöz gdb kell használnia. A gdb alapértelmezés szerint a távoli rendszeren lévő projektek hibakeresésekor használatos.

A Visual Studio Linux-támogatása függ a TCP-portok továbbításától. Ha a TCP-porttovábbítás le van tiltva a távoli rendszeren, az mind a rsync-ra, mind a gdbserver-re hatással van. Ha ez a függőség hatással van Önre, szavazzon erre a javaslatjegyre a fejlesztői közösségen.

Csatlakozás a WSL-hez

A Visual Studio 2017-ben ugyanezekkel a lépésekkel csatlakozhat a Linux windowsos alrendszeréhez (WSL), mint egy távoli Linux-géphez. Használja localhost a hosztnév.

A Visual Studio 2019 16.1-es verziójától kezdve a Visual Studio natív támogatást nyújt a C++ és a Windows-alrendszer linuxos (WSL). Ez azt jelenti, hogy közvetlenül a helyi WSL-telepítésen hozhat létre és végezhet hibakeresést. Többé nem kell távoli kapcsolatot hozzáadnia vagy SSH-t konfigurálnia. A WSL telepítésének részleteit itt találja.

Ha a WSL-telepítést úgy szeretné konfigurálni, hogy működjön a Visual Studióval, a következő eszközökre van szüksége: gcc vagy clang, gdb, make, ninja-build (csak a Visual Studio 2019 16.6-os vagy újabb verzióját használó CMake-projektekhez szükséges), rsyncés zip. A apt használó disztribúciókra a következő paranccsal telepítheti őket, amely a g++ fordítót is telepíti:

sudo apt install g++ gdb make ninja-build rsync zip

WSL-localhost kapcsolati problémák megoldása

A WSL-hez való localhost csatlakozáskor ütközés léphet fel a Windows kliens ssh 22-es portjával. A WSL-ben módosítsa a portot, amelyet a ssh a kérések fogadására vár, 23-ra a /etc/ssh/sshd_config-ben.

Port 23

Ha jelszóval csatlakozik, győződjön meg arról, hogy a következők beállításra kerültek a /etc/ssh/sshd_config-ban:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes

A módosítások elvégzése után indítsa újra az SSH-kiszolgálót (sudo service ssh restart az Ubuntu-on).

Ezután próbálkozzon a localhost kapcsolathoz való csatlakozással újra a 23-as port használatával.

További információ: Linux számítási feladatok letöltése, telepítése és beállítása.

Az MSBuild-projekt WSL-hez való konfigurálásához lásd: Linux-projekt konfigurálása. A WSL-hez készült CMake-projekt konfigurálásához lásd: Linux CMake-projekt konfigurálása. Ha lépésenkénti útmutatást szeretne követni egy egyszerű konzolalkalmazás WSL-vel való létrehozásához, tekintse meg ezt a bevezető blogbejegyzést C++-ról a Visual Studio 2019-zel és a Windows Subsystem for Linux (WSL).

Lásd még