SSH kulcsok beállítása CentOS 7 rendszeren
Bevezetés
Az SSH, vagyis a biztonságos héj, egy titkosított protokoll, amelyet a szerverek kezelésére és a velük való kommunikációra használnak. Amikor egy CentOS szerverrel dolgozik, jó eséllyel az ideje nagy részét egy terminál munkamenetben fogja tölteni, amely SSH-n keresztül kapcsolódik a szerverhez.
Ez az útmutató az SSH kulcsok beállítására összpontosít egy vanília CentOS 7 telepítéshez. Az SSH kulcsok egyszerű és biztonságos módját nyújtják a szerverre való bejelentkezésnek, és minden felhasználó számára ajánlott.
1. lépés – RSA kulcspár létrehozása
Az első lépés a kulcspár létrehozása az ügyfélgépen (általában az Ön számítógépén):
- ssh-keygen
A ssh-keygen
alapértelmezés szerint egy 2048 bites RSA kulcspárt hoz létre, ami a legtöbb felhasználási esethez elég biztonságos (opcionálisan megadhatja a -b 4096
flaget, hogy nagyobb, 4096 bites kulcsot hozzon létre).
A parancs beírása után a következő promptnak kell megjelennie:
OutputGenerating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):
Nyomja meg a ENTER
gombot a kulcspár mentéséhez a .ssh/
alkönyvtárba az otthoni könyvtárában, vagy adjon meg egy másik elérési utat.
Ha korábban már generált egy SSH kulcspárt, akkor a következő promptot láthatja:
Output/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?
Ha a lemezen lévő kulcs felülírása mellett dönt, akkor a továbbiakban nem tud a korábbi kulcs segítségével hitelesíteni. Legyen nagyon óvatos az igen választásával, mivel ez egy romboló folyamat, amelyet nem lehet visszafordítani.
Ezután a következő promptot kell látnia:
OutputEnter passphrase (empty for no passphrase):
Itt opcionálisan megadhat egy biztonságos jelszót, ami erősen ajánlott. A jelszótag egy további biztonsági réteget ad, hogy megakadályozza az illetéktelen felhasználók bejelentkezését. Ha többet szeretne megtudni a biztonságról, olvassa el a Hogyan konfiguráljuk az SSH kulcsalapú hitelesítést egy Linux-kiszolgálón?
Ezután a következő kimenetet kell látnia:
OutputYour identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+
Már rendelkezik egy nyilvános és egy privát kulccsal, amelyet a hitelesítéshez használhat. A következő lépés a nyilvános kulcs elhelyezése a szerveren, hogy az SSH-kulcs alapú hitelesítést használhassa a bejelentkezéshez.
2. lépés – A nyilvános kulcs másolása a CentOS szerverre
A nyilvános kulcsot a leggyorsabban a ssh-copy-id
nevű segédprogrammal másolhatja a CentOS gépre. Egyszerűsége miatt ez a módszer erősen ajánlott, ha rendelkezésre áll. Ha a kliensgépen nem áll rendelkezésére a ssh-copy-id
, akkor használhatja az ebben a szakaszban bemutatott két alternatív módszer egyikét (másolás jelszóalapú SSH-n keresztül, vagy a kulcs kézi másolása).
A nyilvános kulcs másolása az ssh-copy-id használatával
A ssh-copy-id
eszköz alapértelmezés szerint sok operációs rendszerben megtalálható, így lehet, hogy a helyi rendszerén elérhető. Ahhoz, hogy ez a módszer működjön, már rendelkeznie kell jelszó alapú SSH hozzáféréssel a kiszolgálójához.
A segédprogram használatához csak meg kell adnia a távoli gépet, amelyhez csatlakozni szeretne, és azt a felhasználói fiókot, amelyhez jelszavas SSH hozzáféréssel rendelkezik. Ez az a fiók, amelyre a nyilvános SSH-kulcsát másolja a rendszer.
A szintaxis a következő:
- ssh-copy-id [email protected]_host
A következő üzenetet láthatja:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Ez csak azt jelenti, hogy a helyi számítógép nem ismeri fel a távoli gépet. Ez akkor fordul elő, amikor először csatlakozik egy új állomáshoz. Írja be az “igen”-t, és nyomja meg a ENTER
gombot a folytatáshoz.
A következő lépésben a segédprogram átvizsgálja a helyi fiókját a korábban létrehozott id_rsa.pub
kulcs után. Ha megtalálja a kulcsot, megkérdezi a távoli felhasználó fiókjának jelszavát:
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new [email protected]'s password:
Írd be a jelszót (a gépelésed biztonsági okokból nem jelenik meg), majd nyomd meg a ENTER
gombot. A segédprogram a megadott jelszóval csatlakozik a távoli állomáson lévő fiókhoz. Ezután a ~/.ssh/id_rsa.pub
kulcsának tartalmát átmásolja a távoli fiók ~/.ssh
home authorized_keys
könyvtárában lévő authorized_keys
nevű fájlba.
A következő kimenetet kell látnia:
OutputNumber of key(s) added: 1Now try logging into the machine, with: "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.
Ezzel a ponttal a id_rsa.pub
kulcsát feltöltötte a távoli fiókba. Folytathatjuk a 3. lépéssel.
Nyilvános kulcs másolása SSH használatával
Ha nem áll rendelkezésünkre a ssh-copy-id
, de van jelszóalapú SSH-hozzáférésünk a kiszolgálónk egyik fiókjához, akkor hagyományos SSH módszerrel is feltölthetjük a kulcsokat.
Ezt úgy tehetjük meg, hogy a cat
paranccsal kiolvassuk a helyi számítógépünkön lévő nyilvános SSH kulcs tartalmát, és azt SSH kapcsolaton keresztül a távoli kiszolgálóra vezetjük.
A másik oldalon meggyőződhetünk arról, hogy a ~/.ssh
könyvtár létezik és megfelelő jogosultságokkal rendelkezik az általunk használt fiók alatt.
Ezután az átvezetett tartalmat egy authorized_keys
nevű fájlba adhatjuk ki ebben a könyvtárban. A >>
átirányítási szimbólumot fogjuk használni a tartalom hozzáadásához ahelyett, hogy felülírnánk azt. Ez lehetővé teszi számunkra a kulcsok hozzáadását anélkül, hogy a korábban hozzáadott kulcsokat megsemmisítenénk.
A teljes parancs így néz ki:
- cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
A következő üzenetet láthatja:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Ez azt jelenti, hogy a helyi számítógép nem ismeri fel a távoli gépet. Ez akkor fordul elő, amikor először csatlakozik egy új állomáshoz. Írja be az “igen”-t, és nyomja meg a ENTER
gombot a folytatáshoz.
Ezután a távoli felhasználói fiók jelszavának megadására kell kérni:
Output [email protected]'s password:
A jelszó megadása után a id_rsa.pub
kulcs tartalma átmásolódik a távoli felhasználói fiók authorized_keys
fájljának végére. Ha ez sikeres volt, folytassa a 3. lépéssel.
Nyilvános kulcs manuális másolása
Ha nem rendelkezik jelszóalapú SSH hozzáféréssel a kiszolgálójához, akkor a fenti folyamatot manuálisan kell elvégeznie.
Az id_rsa.pub
fájl tartalmát manuálisan csatoljuk a távoli gépen lévő ~/.ssh/authorized_keys
fájlhoz.
A id_rsa.pub
kulcsod tartalmának megjelenítéséhez írd be a következőt a helyi gépeden:
- cat ~/.ssh/id_rsa.pub
A kulcs tartalmát fogod látni, aminek valahogy így kell kinéznie:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected]
Lépj be a távoli gépedre bármilyen rendelkezésre álló módszerrel.
Mihelyt hozzáfér a távoli szerveren lévő fiókjához, győződjön meg arról, hogy a ~/.ssh
könyvtár létezik. Ez a parancs létrehozza a könyvtárat, ha szükséges, vagy nem tesz semmit, ha már létezik:
- mkdir -p ~/.ssh
Most létrehozhatja vagy módosíthatja a authorized_keys
fájlt ebben a könyvtárban. A id_rsa.pub
fájl tartalmát hozzáadhatja a authorized_keys
fájl végéhez, létrehozva azt, ha szükséges, ezzel a paranccsal:
- echo public_key_string >> ~/.ssh/authorized_keys
A fenti parancsban a public_key_string
helyébe a helyi rendszeren végrehajtott cat ~/.ssh/id_rsa.pub
parancs kimenete lép. Ennek ssh-rsa AAAA...
-val kell kezdődnie.
Végül gondoskodunk arról, hogy a ~/.ssh
könyvtár és a authorized_keys
fájl megfelelő jogosultságokkal rendelkezzen:
- chmod -R go= ~/.ssh
Ez rekurzív módon eltávolítja a ~/.ssh/
könyvtár összes “csoport” és “egyéb” jogosultságát.
Ha a root
fiókot használjuk egy felhasználói fiók kulcsainak beállításához, akkor az is fontos, hogy a ~/.ssh
könyvtár a felhasználóé legyen, és ne a root
-é:
- chown -R sammy:sammy ~/.ssh
Ez a bemutatóban a mi felhasználónk neve sammy, de a fenti parancsba a megfelelő felhasználónevet kell behelyettesíteni.
Most már megkísérelhetjük a jelszó nélküli hitelesítést az Ubuntu szerverünkön.
3. lépés – Hitelesítés a CentOS szerverre SSH kulcsok használatával
Ha sikeresen elvégezte a fenti eljárások egyikét, akkor a távoli fiók jelszava nélkül is be kell tudnia jelentkezni a távoli állomáson.
Az alapvető folyamat ugyanaz:
- ssh [email protected]_host
Ha most csatlakozik először ehhez az állomáshoz (ha a fenti utolsó módszert használta), akkor valami ilyesmit láthat:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes
Ez azt jelenti, hogy a helyi számítógép nem ismeri fel a távoli állomást. Írja be az “igen”-t, majd nyomja meg a ENTER
billentyűt a folytatáshoz.
Ha nem adott meg jelszót a magánkulcsához, akkor azonnal bejelentkezik. Ha a magánkulcs létrehozásakor megadta a magánkulcshoz tartozó jelszót, akkor most a rendszer felszólítja a jelszó megadására. A hitelesítés után egy új héj munkamenetnek kell megnyílnia az Ön számára a CentOS-kiszolgálón a konfigurált fiókkal.
Ha a kulcsalapú hitelesítés sikeres volt, folytassa, hogy megtudja, hogyan biztosíthatja tovább a rendszerét a jelszóhitelesítés letiltásával.
4. lépés – Jelszóhitelesítés letiltása a kiszolgálón
Ha jelszó nélkül be tudott jelentkezni a fiókjába SSH segítségével, akkor sikeresen konfigurálta az SSH-kulcsalapú hitelesítést a fiókjához. A jelszóalapú hitelesítési mechanizmusa azonban továbbra is aktív, ami azt jelenti, hogy a kiszolgálója továbbra is ki van téve a brute-force támadásoknak.
Az ebben a szakaszban található lépések elvégzése előtt győződjön meg arról, hogy vagy a kiszolgáló root fiókjához van beállítva az SSH-kulcs alapú hitelesítés, vagy lehetőleg a kiszolgáló nem root fiókjához van beállítva az SSH-kulcs alapú hitelesítés sudo
jogosultságokkal. Ez a lépés lezárja a jelszóalapú bejelentkezéseket, ezért kulcsfontosságú annak biztosítása, hogy továbbra is hozzáférhessen a rendszergazdai jogosultságokhoz.
Amikor megerősítette, hogy a távoli fiókja rendelkezik rendszergazdai jogosultságokkal, jelentkezzen be a távoli kiszolgálóra SSH-kulcsokkal, vagy root-ként, vagy egy sudo
jogosultságokkal rendelkező fiókkal. Ezután nyissa meg az SSH-démon konfigurációs fájlját:
- sudo vi /etc/ssh/sshd_config
A fájlban keressen egy PasswordAuthentication
nevű direktívát. Ez lehet, hogy ki van kommentálva. Nyomja meg a i
gombot a szöveg beillesztéséhez, majd vegye ki a megjegyzést a sorból, és állítsa az értéket “no”-ra. Ezzel letiltja a fiókjelszavakkal történő SSH-n keresztüli bejelentkezést:
...PasswordAuthentication no...
Amikor befejezte a változtatásokat, nyomja meg a ESC
, majd a :wq
billentyűt a változtatások fájlba írásához és a kilépéshez. A változtatások tényleges végrehajtásához újra kell indítanunk a sshd
szolgáltatást:
- sudo systemctl restart sshd.service
Az elővigyázatosság kedvéért nyissunk egy új terminálablakot, és teszteljük, hogy az SSH szolgáltatás megfelelően működik-e, mielőtt bezárnánk ezt a munkamenetet:
- ssh [email protected]_host
Amikor ellenőriztük az SSH szolgáltatást, nyugodtan bezárhatjuk az összes jelenlegi kiszolgáló munkamenetet.
A CentOS kiszolgálón lévő SSH démon mostantól csak SSH kulcsokra válaszol. A jelszó alapú hitelesítést sikeresen kikapcsoltuk.
Következtetés
Most már SSH-kulcs alapú hitelesítést kell beállítania a szerverén, ami lehetővé teszi a bejelentkezést fiókjelszó megadása nélkül.
Ha többet szeretne megtudni az SSH-val való munkáról, tekintse meg az SSH Essentials Guide-ot.