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:

Output
Generating 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:

Output
Enter 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:

Output
Your 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ő:

A következő üzenetet láthatja:

Output
The 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:

Output
Number 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:

Output
The 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:

Output
ssh-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:

Ha most csatlakozik először ehhez az állomáshoz (ha a fenti utolsó módszert használta), akkor valami ilyesmit láthat:

Output
The 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:

/etc/ssh/sshd_config
...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:

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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.