Kihagyás

Távoli rendszerek elérése

Fejlesztés során többször előfordulhat, hogy valamilyen távoli környezethez akarunk hozzáférni, esetleg annak fájlrendszerét elérni. Ilyen lehet mind a GitLab és GitHub elérése, mind a különböző AWS példányokhoz való csatlakozás. Ezen oldal az ilyen hozzáférések alapvető beállítását mutatja be.

SSH konfiguráció

Távoli környezetek biztonságos elérésére a leggyakoribb mód az SSH (Secure SHell). Az ennek használatára alkalmas ssh parancs a legtöbb rendszeren alapból megtalálható.

Ahhoz, hogy SSH segítségével csatlakozni tudjunk egy szerverhez szükségünk lesz egy SSH kulcspárra, mely egy privát és egy publikus kulcsból áll. A publikus kulcsot megosztjuk a szerverrel, majd amikor csatlakozni akarunk, a privát kulccsal azonosítjuk, hogy valóban a miénk a publikus kulcs.

Kulcspár generálása

SSH kulcspárt generálni a következő paranccsal tudunk:

ssh-keygen -t ed25519 -C "<céges email>"

A parancs kiadása után a újabb bemenetet vár a terminál, itt a kulcspár mentési helyét kell megadnunk, amennyiben a zárójelben látható alapértelmezés nem megfelelő:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):  

Újabb Enter nyomása után a kulcspár megtalálható a megfelelő helyen. A privát kulcs kiterjesztés nélküli, míg a publikus kulcs .pub kiterjesztéssel van ellátva.

Fontos!

A privát kulcsot soha NE adjuk meg sehol.

Más típusú kulcspárok generálása

Az elliptikus görbéken alapuló ed25519 eljárás újabb, és bár igen széles körben támogatott, nem feltétlen elérhető mindenhol. Ilyenkor a rendszer valószínűleg RSA kulcspár generálására kér, amit a parancs következő módosításával tehetünk meg:

ssh-keygen -t rsa -b 2048 -C "<céges email>"

Itt -b 2048 azt mondja meg, hogy 2048 bites kulcsot készüljön. Hogy pontosan milyen kulcspár szükséges, legegyszerűbb ha megnézzük a megfelelő rendszer dokumentációjában. Az ssh-keygen parancs egyéb beállításait itt találjuk.

Csatlakozás szerverhez

Miután legeneráltuk a kulcspárunkat, és a távoli rendszernek megadtuk a publikus kulcsunkat, a következő módon tudunk csatlakozni ahhoz:

ssh -i "{ssh privát kulcs elérési út}" {felhasználónév}@{domain}

Itt a domain a szerver elérhetőségét takarja (pl. 8.8.8.8, gitlab.com), a felhasználónevet pedig a rendszerre specifikusan kell megszereznünk. Az ssh parancs számos további beállítást enged meg (pl. port forwarding), ezekről itt lehet tájékozódni.

Adott címre intézett SSH parancs először lehet, figyelmeztet, hogy ismeretlen host-hoz próbálunk csatlakozni. Amennyiben tudjuk, hogy jó helyre csatlakozunk, nyugodtan figyelmen kívül hagyhatjuk ezt, és megengedhetjük, hogy hozzávegye az ismert host-ok listájához.

Konfigurációs fájl

Az ssh parancs és a legtöbb ráépülő eszköz támogatja a konfigurációs fájlt. Ennek helye {felhasználói mappa}/.ssh/config (kiterjesztés nélkül). A fájlban definiálhatunk előre SSH profilokat, így elkerülve, hogy folyamatosan a parancssorban, a megfelelő flag-ekkel kelljen magunkat azonosítani.

A fájl egy bejegyzésének formája a következő:

Host <profil>
    HostName <domain>
    User <felhasználónév>
    IdentityFile <privát kulcs elérési út>

Amennyiben a config fájlba ezt megadjuk, a fenti parancs helyett elegendő az ssh <profil> parancsot kiadnunk. A konfigurációs fájl összes beállítását itt találjuk. Ezek közül általánosságban érdemes az AddKeysToAgent paramétert yes-re állítani minden profil esetén.

Kommentek

A config fájlba tehetünk kommenteket a # szimbólum segítségével.

Felhasználó felülírása parancssorban

A parancssori bemeneteknek nagyobb a precedenciája, mint a config fájlban találhatóknak. Ennek egy különleges szintaxisú esete a felhasználó. Amennyiben adott profillal, de más felhasználóhoz akarunk csatlakozni (vagy akár nincs is a profilban definiálva felhasználó), az a következő módon tehetjük meg:

ssh <új felahsználó>@<profil>
Példa: egy GitLab profil

A következő módon konfigurálható például a GitLab SSH hozzáférése:

# Intuitech GitLab account
Host gitlab.com
    HostName gitlab.com
    IdentityFile ~\.ssh\id_rsa
    AddKeysToAgent yes

Ekkor kiadva a git clone git@gitlab.com:<repo útvonal> parancsot, automatikusan használni fogja a git az SSH kulcsunkat a jogosultság ellenőrzéséhez.

A távoli környezeteink és a DevEnvPortal

A Guru esetén (de természetesen nem csak itt) számos AWS környezet áll rendelkezésünkre (bővebben itt). Ezek kezelése, információik lekérése a DevEnvPortal felületen lehetséges. Itt többek között az alábbi műveleteket végezhetjük:

A projekthez tartozó AWS környezetek megtekintése

Az oldalra bejelentkezve az első, amit látunk, azok a hozzánk rendelt AWS környezetek

A DevEnvPortal nyitólap a Gránit Guru jelenlegi környezeteit mutatva

Itt megtekinthetjük többek között az AWS egységek példányneveit, az indítás és leállítás ütemezését, illetve a környezetek jelenlegi státszát is, ahol amellett, hogy látjuk, hogy futnak-e, manuálisan el is indíthatjuk vagy leállíthatjuk őket. (Ezeket az opciókat oldalra görgetve találjuk, amennyiben nem látszanak automatikusan.)

Profil információk megtekintése

Az oldalon a jobb felső sarokban a nevünkre kattintva, majd a lenyíló menüben a „Profil“ menüpontra nyomva a profilunk oldalára jutunk. Itt megtekinthetjük a szervezeti email címünket, SSH jelszavunkat (ezt a regisztráció során adtuk meg, és az környezeteken ez a profilunk jelszava), SSH felhasználónevünket és publikus SSH kulcsunkat.

Regisztráció és SSH hozzáférések beállítása

Az AWS környezeteinket elérhetjük SSH-n keresztül. Erre bármikor szükség lehet, hiszen a szerveren futó folyamatokat így tudjuk vizsgálni, és például a távoli környezetek adatbázisaihoz való hozzáféréshez is elengedhetetlen.

A környezetekhez való SSH hozzáférést a következő módon tudjuk beállítani:

  1. Jelentkezzünk be a https://devportal.internal.intuitech.studio/ oldalon. Amennyiben az nem engedi a bejelentkezést, forduljunk a PA-hoz segítségért.

  2. Generáljunk egy SSH kulcspárt a fentebb leírt módon.

  3. Bejelentkezés után egy ablak fogad minket, mely egy SSH publikus kulcsot vár, illetve egy jelszót. Töltsük fel a generált SSH kulcspár publikus részét, illetve adjunk meg egy jelszót. Ez a jelszó lesz a szervereken létrehozott profilunk jelszava. A felhasználónév így áll elő, kisbetűsen, ékezetek nélkül:

    {keresztnév első két betűje}{vezetéknév}

Ezzel sikeresen regisztráltunk a DevEnvPortal felületére. Ha minden jól van beállítva, ezen a ponton látni fogjuk a Guru AWS példányait (jelenleg Dev és UAT-like). Amennyiben nem látjuk őket, forduljunk a PA-hoz segítségért.

A DevEnvPortal nyitólap a Gránit Guru jelenlegi környezeteit mutatva

Végül ellenőrizzük az SSH hozzáférést. A privát kulcs az, amelynek publikus párját feltöltöttük, míg felhasználónév a (3) lépésben leírt. A domain-eket a környezetek összefoglaló táblázatában találjuk.

SSH elérés megadása a config-ban

Természetesen ezeket a környezeteket is hozzáadhatjuk az SSH konfigurációs fájlhoz. Ez például a develop környezet esetében így nézhet ki

# Guru dev AWS
Host devva
    HostName granit-virtual-assistant.develop.dev.gbsolutions.io
    IdentityFile ~\.ssh\id_aws
    User <felhasználónév>
    AddKeysToAgent yes

Ekkor az ssh devva parancsot kiadva azonnal a develop AWS termináljába kerülünk.