SSH elérés beállítása az Ubuntu rendszeredhez távoli menedzsmenthez

A modern szervermenedzsment szinte elképzelhetetlen távoli hozzáférés nélkül. Legyen szó egy otthoni szerverről, egy virtuális gépről a felhőben, vagy egy dedikált rendszerről, a helyszíni konzolhoz való hozzáférés gyakran nem megoldható, vagy egyszerűen nem hatékony. Ezen a ponton lép színre az SSH (Secure Shell), mint a távoli menedzsment egyik alapköve. Ez az útmutató végigvezet téged az SSH elérés beállításának minden lépésén az Ubuntu rendszereden, a kezdeti telepítéstől a haladó biztonsági beállításokig, biztosítva, hogy a rendszered elérhető és biztonságos legyen.

Az SSH nem csupán egy protokoll a távoli parancssori hozzáféréshez, hanem egy titkosított csatorna is, amely biztonságos adatátvitelt tesz lehetővé két számítógép között. Ez azt jelenti, hogy minden kommunikáció, beleértve a felhasználóneveket, jelszavakat és az átvitt adatokat, titkosítva van, megakadályozva ezzel az illetéktelen hozzáférést és lehallgatást.

Készen állsz arra, hogy felszabadítsd az Ubuntu rendszered távoli menedzsment potenciálját? Akkor vágjunk is bele!

Beállítások ikonElőfeltételek és felkészülés

Mielőtt belevágnánk az SSH beállításába, győződj meg róla, hogy a következő feltételek adottak:

  • Egy működő Ubuntu rendszer (asztali vagy szerver kiadás), amelyhez fizikai vagy konzolos hozzáférésed van.
  • Stabil internetkapcsolat a szerverhez.
  • Egy kliensgép (például a saját számítógéped), amelyről csatlakozni szeretnél.
  • Alapszintű ismeretek a Linux parancssor használatáról.

Az összes parancsot a szerveren fogjuk futtatni, hacsak másképp nem jelezzük.

Telepítés ikonAz OpenSSH szerver telepítése

Az SSH szerver komponens az Ubuntu tárolóiban található openssh-server csomagban. A telepítés pofonegyszerű:

Először mindig frissítsük a csomaglistákat, hogy biztosan a legújabb szoftververziókat érjük el:

sudo apt update

Ezután telepítsük az openssh-server csomagot:

sudo apt install openssh-server

A telepítés befejezése után az SSH szolgáltatás automatikusan elindul és engedélyezésre kerül (azaz rendszerindításkor is elindul). Ellenőrizhetjük a szolgáltatás állapotát a következő paranccsal:

sudo systemctl status ssh

Ha minden rendben van, a kimenetben valami olyasmit kell látnod, hogy Active: active (running). Ha valamiért nem futna, a sudo systemctl start ssh paranccsal indíthatod el.

Tűzfal ikonA tűzfal konfigurálása (UFW)

Az Ubuntu alapértelmezetten az UFW (Uncomplicated Firewall) tűzfalat használja, amely egy felhasználóbarát felület az iptables szabályok kezelésére. Mivel az SSH távoli hozzáférést biztosít, kritikus fontosságú, hogy a tűzfalunk engedélyezze a bejövő kapcsolatokat az SSH portján (alapértelmezetten a 22-es porton).

Először ellenőrizd az UFW állapotát:

sudo ufw status

Ha az UFW inaktív, akkor minden bejövő kapcsolat engedélyezett, ami biztonsági kockázatot jelent. Javasolt az UFW aktiválása és az SSH port engedélyezése.

Engedélyezzük az SSH szolgáltatást az UFW-ben:

sudo ufw allow ssh

Ez a parancs automatikusan engedélyezi a TCP forgalmat a 22-es porton. Alternatívaként a portszámot is megadhatod:

sudo ufw allow 22/tcp

Ha az UFW inaktív volt, engedélyezd most:

sudo ufw enable

Ekkor egy figyelmeztetést kaphatsz arról, hogy ez megszakíthatja a meglévő SSH kapcsolatokat (ha már van ilyen). Erősítsd meg az y betűvel.
Most ellenőrizd újra az UFW állapotát:

sudo ufw status

Látnod kell, hogy az SSH (vagy a 22/tcp) engedélyezett a kimenetben.

Hálózat ikonElső SSH hozzáférés a kliensgépről

Miután az SSH szerver fut és a tűzfal engedélyezi a hozzáférést, ideje kipróbálni a kapcsolatot a kliensgépről.

Először is szükséged lesz az Ubuntu szervered IP-címére. Ezt megtudhatod a szerveren a következő paranccsal:

ip a

Keresd meg azt az IP-címet, amelyik a hálózati interfészhez tartozik (pl. eth0 vagy enp0s3). Általában a inet utáni szám lesz az IP-cím.

Most a kliensgépeden nyiss meg egy terminált, és add ki a következő parancsot:

ssh felhasználónév@szerver_ip_címe

Cseréld ki a felhasználónév-et egy létező felhasználónévre a szervereden (ajánlott nem a root felhasználót használni, ha engedélyezett is), és a szerver_ip_címe-t a szervered IP-címére.

Az első csatlakozáskor a kliens figyelmeztetni fog egy „host key fingerprint” nevű dologra. Ez normális, és azt jelzi, hogy a kliens nem ismeri még a szervert. Gépeld be a yes szót a megerősítéshez, és nyomj Entert. Ezután a szerver host kulcsa hozzáadódik a kliens ~/.ssh/known_hosts fájljához. Ezt követően kérni fogja a felhasználó jelszavát. Add meg, és ha minden rendben, sikeresen bejelentkezel a szerveredre!

Biztonság ikonBiztonsági legjobb gyakorlatok: Védd meg az SSH elérésedet

Az SSH rendkívül biztonságos, ha megfelelően konfigurálják. Íme néhány kulcsfontosságú lépés a szervered védelmének maximalizálásához:

1. Az alapértelmezett SSH port megváltoztatása

Az SSH alapértelmezett portja a 22. Számos automatizált bot és szkript folyamatosan pásztázza az internetet a 22-es porton nyitva álló SSH szerverek után, és megpróbálja feltörni azokat brute-force támadásokkal. A port megváltoztatása önmagában nem teszi áttörhetetlenné a szerveredet, de jelentősen csökkenti az automatizált támadások számát, mivel azokat eltéríted az alapértelmezett beállításokról.

Nyisd meg az SSH démon konfigurációs fájlját egy szövegszerkesztővel (pl. Nano):

sudo nano /etc/ssh/sshd_config

Keresd meg a sort, ami így kezdődik: #Port 22 (a # jel jelzi, hogy kommentelve van, azaz inaktív). Távolítsd el a # jelet, és változtasd meg a 22-t egy nem használt portszámra 1024 és 65535 között. Például, használhatod a 2222-es portot:

Port 2222

Mentsd a fájlt (Nano esetén: Ctrl+O, Enter, Ctrl+X), majd indítsd újra az SSH szolgáltatást a változtatások érvényesítéséhez:

sudo systemctl restart ssh

Nagyon fontos: Ha megváltoztattad a portot, frissítened kell az UFW tűzfal szabályát is! Először töröld az eredeti szabályt:

sudo ufw delete allow 22/tcp

Ezután add hozzá az új portot:

sudo ufw allow 2222/tcp

Mostantól a kliensgépről a -p kapcsolóval kell megadnod az új portot:

ssh -p 2222 felhasználónév@szerver_ip_címe

2. A Root bejelentkezés letiltása

A root felhasználó a Linux rendszereken a legmagasabb jogosultságú fiók. A root felhasználó közvetlen SSH bejelentkezésének engedélyezése biztonsági kockázatot jelent, mivel ez a fiók a leggyakoribb célpont a brute-force támadások során. Jobb, ha egy normál felhasználóval jelentkezel be, majd onnan használod a sudo parancsot, amikor adminisztrátori jogosultságra van szükséged.

Nyisd meg újra az sshd_config fájlt:

sudo nano /etc/ssh/sshd_config

Keresd meg a sort: PermitRootLogin. Ha nem találod, add hozzá. Változtasd meg az értékét no-ra:

PermitRootLogin no

Mentsd a fájlt, majd indítsd újra az SSH szolgáltatást:

sudo systemctl restart ssh

Mostantól a root felhasználóval nem tudsz közvetlenül bejelentkezni SSH-n keresztül.

3. Jelszó alapú hitelesítés letiltása és kulcsalapú hitelesítés engedélyezése

Ez a lépés talán a legfontosabb biztonsági fejlesztés, amit tehetsz. A kulcsalapú hitelesítés sokkal biztonságosabb, mint a jelszó alapú hitelesítés, mivel sokkal nehezebb feltörni, és nem igényel jelszó megadását minden bejelentkezéskor (ha nincs jelszókifejezés a kulcson). Ehhez egy privát és egy publikus kulcspárra van szükséged.

A. SSH kulcspár generálása a kliensgépen

Nyiss meg egy terminált a kliensgépeden, és futtasd a következő parancsot:

ssh-keygen -t rsa -b 4096
  • -t rsa: Megadja a kulcs típusát (RSA).
  • -b 4096: Megadja a kulcs bit hosszát (4096 bit, ami nagyon erős).

A rendszer kérni fogja, hova mentse a kulcsot (hagyd alapértelmezetten: ~/.ssh/id_rsa) és kérhet egy jelszókifejezést (passphrase). Erősen ajánlott egy jelszókifejezést beállítani a privát kulcsra. Ez extra védelmet nyújt, ha valaki hozzáfér a privát kulcsodhoz, mivel anélkül nem tudja használni, hogy ismerné a jelszókifejezést. Minden bejelentkezéskor meg kell majd adnod, hacsak nem használsz SSH agentet.

A parancs sikeres futása után két fájl jön létre a ~/.ssh/ könyvtárban:

  • id_rsa: Ez a privát kulcsod. Ezt soha ne oszd meg senkivel!
  • id_rsa.pub: Ez a publikus kulcsod. Ezt másoljuk át a szerverre.

B. A publikus kulcs másolása a szerverre

A legegyszerűbb és leginkább ajánlott módja a publikus kulcs másolásának az ssh-copy-id segédprogram használata:

ssh-copy-id felhasználónév@szerver_ip_címe

Ha megváltoztattad az SSH portot, ne felejtsd el megadni a -p kapcsolót:

ssh-copy-id -p 2222 felhasználónév@szerver_ip_címe

Ez a parancs automatikusan létrehozza a ~/.ssh könyvtárat a szerveren (ha még nem létezik), beállítja a megfelelő jogosultságokat, és hozzáadja a publikus kulcsodat a szerveren lévő felhasználó ~/.ssh/authorized_keys fájljához.

Alternatív manuális módszer (ha az ssh-copy-id valamiért nem működik):

Először is, a kliensen másold ki a publikus kulcsod tartalmát:

cat ~/.ssh/id_rsa.pub

Másold ki a teljes kimenetet (a ssh-rsa AAAA... résztől a végéig, beleértve a felhasználónevet és a gépnevet).

Most jelentkezz be a szerverre a jelszavaddal (még mielőtt letiltanád a jelszavas hitelesítést):

ssh felhasználónév@szerver_ip_címe

Hozd létre a .ssh könyvtárat, ha még nem létezik, és állítsd be a megfelelő jogosultságokat:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

Nyisd meg vagy hozd létre az authorized_keys fájlt a .ssh könyvtárban:

nano ~/.ssh/authorized_keys

Illeszd be a kliensről kimásolt publikus kulcsot a fájlba. Minden kulcsot új sorba helyezz! Mentsd el és zárd be a fájlt.
Végül, állítsd be a megfelelő jogosultságokat az authorized_keys fájlra:

chmod 600 ~/.ssh/authorized_keys

C. A jelszó alapú hitelesítés letiltása a szerveren

Miután sikeresen átmásoltad a publikus kulcsodat a szerverre és tesztelted, hogy tudsz-e bejelentkezni vele, most már biztonságosan letilthatod a jelszó alapú hitelesítést. Fontos: Ne zárd be a jelenlegi SSH munkamenetedet, amíg nem győződtél meg róla, hogy a kulcsalapú hitelesítés működik! Különben kizárhatod magad a szerverről!

Nyisd meg az sshd_config fájlt újra:

sudo nano /etc/ssh/sshd_config

Keresd meg és módosítsd a következő sorokat (vagy ha nincsenek, add hozzá őket):

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Győződj meg róla, hogy a PubkeyAuthentication sor engedélyezve van és yes értékű:

PubkeyAuthentication yes

Mentsd el a fájlt, majd indítsd újra az SSH szolgáltatást:

sudo systemctl restart ssh

Mostantól csak a kulcsalapú hitelesítéssel lehet bejelentkezni. Próbáld meg egy új terminál ablakból a kliensen, hogy működik-e. Ha igen, akkor biztonságosan bezárhatod az eredeti munkamenetet.

4. Fail2ban telepítése és konfigurálása

A Fail2ban egy behatolás-megelőző szoftverkeretrendszer, amely figyeli a szerver naplóállományait (pl. az SSH bejelentkezési kísérleteket), és ideiglenesen letiltja azokat az IP-címeket, amelyek rosszindulatú tevékenységet mutatnak (pl. túl sok sikertelen bejelentkezési kísérlet).

Telepítsd a Fail2ban-t:

sudo apt install fail2ban

A Fail2ban konfigurációs fájljai az /etc/fail2ban/ könyvtárban találhatók. Az alapértelmezett beállítások módosításához ne közvetlenül a jail.conf fájlt szerkeszd, hanem hozz létre egy másolatot jail.local néven. Ez biztosítja, hogy a jövőbeni frissítések ne írják felül a módosításaidat:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Most nyisd meg a jail.local fájlt:

sudo nano /etc/fail2ban/jail.local

Keresd meg a [sshd] szekciót. Győződj meg róla, hogy az enabled paraméter true-ra van állítva:

[sshd]
enabled = true

Itt módosíthatod a bantime (az IP-cím blokkolásának időtartama másodpercben, alapértelmezetten 10 perc) és a maxretry (hány sikertelen próbálkozás után tiltsa le az IP-címet, alapértelmezetten 5) paramétereket is. Például, ha hosszabb ideig szeretnéd tiltani a támadókat és kevesebb próbálkozást engedélyeznél:

bantime = 1h    # 1 óra
maxretry = 3    # 3 próbálkozás

Mentsd és zárd be a fájlt. Ezután engedélyezd és indítsd el a Fail2ban szolgáltatást:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Ellenőrizheted az állapotát:

sudo systemctl status fail2ban

És megnézheted az SSH démon által blokkolt IP-címeket:

sudo fail2ban-client status sshd

5. Egyéb biztonsági tippek

  • Erős jelszavak a felhasználóknak: Bár kulcsalapú hitelesítést használsz, győződj meg róla, hogy a szervereden lévő összes felhasználói fiók erős, egyedi jelszóval rendelkezik. Ez akkor is fontos, ha valaki helyileg hozzáférne a szerverhez.
  • Rendszeres frissítések: Mindig tartsd naprakészen az Ubuntu rendszeredet. A szoftverfrissítések gyakran tartalmaznak biztonsági javításokat, amelyek kritikusak a szervered védelme szempontjából.
    sudo apt update && sudo apt upgrade
  • SSH agent használata: Ha jelszókifejezést használsz a privát kulcsodon, az ssh-agent segít abban, hogy ne kelljen minden alkalommal beírnod a jelszókifejezést.

Konzol ikonHaladó SSH használat

Az SSH nem csak távoli parancssor elérésére alkalmas. Íme néhány további hasznos funkció:

1. SSH aliasok (.ssh/config)

Ha gyakran csatlakozol ugyanazokhoz a szerverekhez, unalmas lehet minden alkalommal beírni a felhasználónevet, az IP-címet és az egyedi portot. Az SSH konfigurációs fájlban (~/.ssh/config) létrehozhatsz aliasokat:

Kliensgépen hozz létre vagy nyiss meg egy fájlt ~/.ssh/config néven:

nano ~/.ssh/config

Add hozzá a következő bejegyzést (cseréld a példaadatokat a sajátodra):

Host my_ubuntu_server
    HostName 192.168.1.100
    User ubuntufelhasznalo
    Port 2222
    IdentityFile ~/.ssh/id_rsa # Ha nem az alapértelmezett kulcsot használod

Mentsd és zárd be a fájlt. Győződj meg róla, hogy a jogosultságok megfelelőek (chmod 600 ~/.ssh/config).
Mostantól egyszerűen így csatlakozhatsz:

ssh my_ubuntu_server

2. Fájlátvitel SCP és SFTP használatával

Az SSH protokollon keresztül biztonságosan másolhatsz fájlokat a kliens és a szerver között az SCP (Secure Copy Protocol) vagy az SFTP (SSH File Transfer Protocol) segítségével.

SCP példa (parancssori másolás):

Fájl másolása a kliensről a szerverre:

scp -P 2222 forras_fajl.txt felhasználónév@szerver_ip_címe:/cél/útvonal/

Fájl másolása a szerverről a kliensre:

scp -P 2222 felhasználónév@szerver_ip_címe:/forras/fajl.txt /cél/útvonal/a/kliensen/

(Ne felejtsd el a -P kapcsolót, ha megváltoztattad az SSH portot.)

SFTP példa (interaktív fájlátvitel):

Az SFTP egy interaktív felületet biztosít, ami hasonló az FTP-hez, de SSH-n keresztül titkosított.
Kliensgépen:

sftp -P 2222 felhasználónév@szerver_ip_címe

Az SFTP prompton belül használhatsz parancsokat, mint a ls, cd, get (letöltés), put (feltöltés).

3. SSH Tunneling (Port Forwarding)

Az SSH tunneling lehetővé teszi, hogy titkosított „alagutakat” hozz létre a helyi és a távoli gépek között, portokat továbbítva. Ez hasznos lehet például belső hálózati szolgáltatások elérésére, amelyek egyébként nem lennének elérhetőek kívülről.

  • Lokális port továbbítás (Local Port Forwarding, -L): Hozzáférhetsz egy szerver hálózatán belül lévő szolgáltatáshoz a helyi gépedről.
    ssh -L 8080:helyi_szerver_ip:80 -p 2222 felhasználónév@szerver_ip_címe

    Ezután böngészőből elérheted a http://localhost:8080 címet, és az a szerveren keresztül a helyi_szerver_ip 80-as portjára irányul.

  • Távoli port továbbítás (Remote Port Forwarding, -R): Lehetővé teszi, hogy egy távoli gép hozzáférjen egy helyi szolgáltatáshoz a szerveren keresztül.

Hibaelhárítás ikonGyakori problémák és hibaelhárítás

Néha előfordulhatnak problémák az SSH kapcsolattal. Íme néhány gyakori probléma és azok megoldása:

  • Connection refused (Kapcsolat megtagadva):
    • Az SSH szolgáltatás nem fut a szerveren. Ellenőrizd: sudo systemctl status ssh.
    • A tűzfal blokkolja a kapcsolatot. Ellenőrizd az UFW állapotát és a szabályokat: sudo ufw status. Győződj meg róla, hogy a megfelelő port engedélyezett.
    • Hibás portot adtál meg a kliensen. Használd a -p kapcsolót a megfelelő porttal.
  • Permission denied (publickey, password) (Engedély megtagadva):
    • Rossz felhasználónevet vagy jelszót adtál meg.
    • A publikus kulcsod nincs megfelelően beállítva a szerveren (helytelen jogosultságok a ~/.ssh vagy authorized_keys fájlon, vagy hibás tartalom az authorized_keys fájlban). Ellenőrizd a jogosultságokat: chmod 700 ~/.ssh és chmod 600 ~/.ssh/authorized_keys a szerveren.
    • A jelszó alapú hitelesítés le van tiltva, és a kulcsalapú hitelesítés nem működik.
  • Connection timed out (Kapcsolat időtúllépés):
    • A szerver nem érhető el a hálózaton (offline, vagy rossz IP-cím).
    • Hálózati tűzfal (nem UFW, hanem router vagy ISP) blokkolja a kapcsolatot.
  • Hibás jogosultságok a kliensen:
    • Ha a privát kulcsod jogosultságai túl „nyitottak”, az SSH kliens megtagadja annak használatát. Győződj meg róla, hogy a privát kulcsodra csak a tulajdonosnak van olvasási jogosultsága: chmod 600 ~/.ssh/id_rsa.
    • Ugyanez vonatkozik az SSH konfigurációs fájlra is: chmod 600 ~/.ssh/config.

Mindig nézd meg a szerver naplóit, ha problémákkal szembesülsz. Az SSH démon naplói sok hasznos információt tartalmaznak:

sudo tail -f /var/log/auth.log

Vagy a journalctl használatával:

sudo journalctl -u ssh -f

Befejezés ikonÖsszefoglalás

Gratulálunk! Most már alaposan ismered az SSH elérés beállítását és biztonságossá tételét az Ubuntu rendszereden. Megtudtad, hogyan telepítsd az OpenSSH szervert, hogyan konfiguráld a tűzfalat, hogyan használd a kulcsalapú hitelesítést a jelszó alapú helyett, és hogyan védd meg a rendszeredet a Fail2ban segítségével.

Az SSH a távoli rendszerfelügyelet alapja, és a megfelelő beállításokkal nemcsak kényelmes, hanem rendkívül biztonságos is lehet. Ne feledd, a biztonság folyamatos odafigyelést igényel, ezért rendszeresen frissítsd a rendszeredet, és tartsd be a legjobb gyakorlatokat.

A megszerzett tudással mostantól hatékonyan és biztonságosan menedzselheted az Ubuntu szervereidet bárhonnan a világon. Fedezd fel az SSH további lehetőségeit, és tedd még gördülékenyebbé a távoli munkát!

Leave a Reply

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük