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!
Elő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.
Az 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.
A 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.
Első 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á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.
Haladó 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 ahelyi_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.
Gyakori 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.
- Az SSH szolgáltatás nem fut a szerveren. Ellenőrizd:
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
vagyauthorized_keys
fájlon, vagy hibás tartalom azauthorized_keys
fájlban). Ellenőrizd a jogosultságokat:chmod 700 ~/.ssh
éschmod 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
.
- 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:
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
Ö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