Az SSH kulcsok beállítása az Ubuntu 16.04-en

Bevezetés

az SSH vagy a secure shell egy titkosított protokoll, amelyet a kiszolgálók kezelésére és kommunikálására használnak. Ha Ubuntu szerverrel dolgozik, akkor valószínű, hogy ideje nagy részét egy terminál munkamenetben fogja tölteni, amely SSH-n keresztül csatlakozik a szerverhez.

ebben az útmutatóban az SSH kulcsok beállítására összpontosítunk egy vanília Ubuntu 16.04 telepítéshez. Az SSH kulcsok egyszerű, biztonságos módot biztosítanak a szerverre való bejelentkezéshez, és minden felhasználó számára ajánlottak.

1.lépés — hozza létre az RSA kulcspárt

az első lépés egy kulcspár létrehozása az ügyfélgépen (általában a számítógépen):

  • ssh-keygen

alapértelmezés szerint ssh-keygen létrehoz egy 2048 bites RSA kulcspárt, amely elég biztonságos a legtöbb felhasználási esethez (opcionálisan átadhatja a -b 4096 jelzőben egy nagyobb 4096 bites kulcs létrehozásához).

a parancs megadása után a következő kimenetet kell látnia:

Output
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

nyomja meg a ENTER a kulcspár elmentéséhez a saját könyvtár .ssh/ alkönyvtárába, vagy adjon meg egy alternatív útvonalat.

ha korábban létrehozott egy SSH kulcspárt, akkor a következő üzenet jelenhet meg:

Output
/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

Ha úgy dönt, hogy felülírja a kulcsot a lemezen, akkor már nem tudja hitelesíteni az előző kulcsot. Legyen nagyon óvatos az igen kiválasztásakor, mivel ez egy pusztító folyamat, amelyet nem lehet megfordítani.

ezután a következő parancsot 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ó további biztonsági réteget ad hozzá, hogy megakadályozza az illetéktelen felhasználók bejelentkezését. Ha többet szeretne megtudni a biztonságról, olvassa el oktatóanyagunkat az SSH Kulcsalapú hitelesítés konfigurálásáról Linux szerveren.

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 username@remote_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+

most már van egy nyilvános és privát kulcsa, amellyel hitelesítheti. A következő lépés a nyilvános kulcs elhelyezése a kiszolgálón, hogy az SSH-kulcs alapú hitelesítést használhassa a bejelentkezéshez.

2. lépés-másolja a nyilvános kulcsot az Ubuntu szerverre

a nyilvános kulcs Ubuntu gazdagépre történő másolásának leggyorsabb módja a ssh-copy-id nevű segédprogram használata. Egyszerűsége miatt ez a módszer erősen ajánlott, ha rendelkezésre áll. Ha nem áll rendelkezésére a ssh-copy-id az ügyfélgépen, használhatja az ebben a szakaszban található 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).

nyilvános kulcs másolása ssh-copy-id használatával

assh-copy-id eszköz alapértelmezés szerint számos operációs rendszerben megtalálható, így előfordulhat, hogy a helyi rendszeren is 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óhoz.

a segédprogram használatához egyszerűen meg kell adnia azt a távoli gazdagépet, amelyhez csatlakozni szeretne, valamint azt a felhasználói fiókot, amelyhez SSH Jelszóval rendelkezik. Ez az a fiók, amelyre a nyilvános SSH kulcs másolásra kerül.

a szintaxis:

  • ssh-copy-id username@remote_host

a következő üzenet jelenhet meg:

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 gazdagépet. Ez akkor történik meg, amikor először csatlakozik egy új gazdagéphez. Írja be az “igen” szót, majd nyomja meg a ENTER gombot a folytatáshoz.

ezután a segédprogram megvizsgálja a helyi fiókot a korábban létrehozott id_rsa.pub kulcs után. Amikor 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:

írja be a jelszót (a gépelés biztonsági okokból nem jelenik meg), majd nyomja meg a ENTER gombot. A segédprogram a megadott jelszó segítségével csatlakozik a távoli gazdagép fiókjához. Ezután másolja a ~/.ssh/id_rsa.pub kulcs tartalmát egy fájlba a távoli fiók otthonában ~/.ssh könyvtár neve authorized_keys.

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.

Ezen a ponton a id_rsa.pub kulcsod feltöltésre került a távoli fiókba. Folytathatja a 3. lépést.

nyilvános kulcs másolása SSH használatával

Ha nem áll rendelkezésre ssh-copy-id, de jelszóalapú SSH-hozzáféréssel rendelkezik a kiszolgálón lévő fiókhoz, akkor a kulcsokat hagyományos SSH módszerrel töltheti fel.

ezt úgy tehetjük meg, hogy a cat paranccsal leolvassuk a nyilvános SSH kulcs tartalmát a helyi számítógépünkön, és ezt egy SSH kapcsolaton keresztül a távoli szerverhez vezetjük.

a másik oldalon meggyőződhetünk arról, hogy a~/.ssh könyvtár létezik, és rendelkezik a megfelelő engedélyekkel az általunk használt fiók alatt.

ezután az átvezetett tartalmat egy authorized_keys nevű fájlba küldhetjük ebben a könyvtárban. A>> átirányítási szimbólumot használjuk a tartalom hozzáadásához, ahelyett, hogy felülírnánk. Ez lehetővé teszi számunkra, hogy kulcsokat adjunk hozzá anélkül, hogy megsemmisítenénk a korábban hozzáadott kulcsokat.

a teljes parancs így néz ki:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

a következő üzenet jelenhet meg:

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 gazdagépet. Ez akkor történik meg, amikor először csatlakozik egy új gazdagéphez. Írja be az “igen” szót, majd nyomja meg a ENTER gombot a folytatáshoz.

ezután meg kell adnia a távoli felhasználói fiók jelszavát:

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. Folytassa a 3. lépéssel, ha ez sikeres volt.

nyilvános kulcs kézi másolása

Ha nem áll rendelkezésre jelszó alapú SSH-hozzáférés a kiszolgálóhoz, akkor a fenti folyamatot manuálisan kell elvégeznie.

manuálisan csatoljuk aid_rsa.pub fájl tartalmát a~/.ssh/authorized_keys fájlhoz a távoli gépen.

a id_rsa.pub kulcs tartalmának megjelenítéséhez írja be ezt a helyi számítógépbe:

  • cat ~/.ssh/id_rsa.pub

látni fogja a kulcs tartalmát, amelynek 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== demo@test

a távoli gazdagép elérése a rendelkezésre álló módszerrel.

miután hozzáfért fiókjához a távoli szerveren, győződjön meg arról, hogy a ~/.ssh könyvtár létezik. Ez a parancs szükség esetén létrehozza a könyvtárat, 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. Hozzáadhatja a id_rsa.pub fájl tartalmát a authorized_keys fájl végéhez, szükség esetén létrehozva, ezzel a paranccsal:

  • echo public_key_string >> ~/.ssh/authorized_keys

a fenti parancsban cserélje ki a public_key_string a helyi rendszeren végrehajtott cat ~/.ssh/id_rsa.pub parancs kimenete. Ennek a következővel kell kezdődnie: ssh-rsa AAAA....

végül biztosítjuk, hogy a ~/.ssh könyvtár és a authorized_keys fájl rendelkezik a megfelelő engedélyekkel:

  • chmod -R go= ~/.ssh

Ez rekurzív módon eltávolítja a ~/.ssh/ könyvtár összes” group”és”other” engedélyét.

Ha a root fiókot használja a felhasználói fiók kulcsainak beállításához, az is fontos, hogy a ~/.ssh könyvtár a felhasználóhoz tartozik, nem pedig a root:

  • chown -R sammy:sammy ~/.ssh

ebben az oktatóanyagban a felhasználónk neve Sammy, de a megfelelő felhasználónevet be kell cserélnie a fenti parancsba.

most már megpróbálhatjuk a jelszó nélküli hitelesítést az Ubuntu szerverünkkel.

3. lépés-hitelesítés az Ubuntu szerverre SSH kulcsok segítségével

Ha sikeresen elvégezte a fenti eljárások egyikét, akkor képesnek kell lennie arra, hogy bejelentkezzen a távoli gazdagépbe a távoli fiók jelszava nélkül.

az alapvető folyamat ugyanaz:

  • ssh username@remote_host

ha először csatlakozik ehhez a gazdagéphez (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 gazdagépet. Írja be az “igen” szót, majd nyomja meg a ENTER gombot a folytatáshoz.

Ha nem adtál meg jelszót a privát kulcsodhoz, azonnal bejelentkezel. Ha a kulcs létrehozásakor jelszót adott meg a privát kulcshoz, akkor a rendszer kéri, hogy adja meg most (vegye figyelembe, hogy a billentyűleütések nem jelennek meg a terminál munkamenetében a biztonság érdekében). A hitelesítés után egy új shell munkamenetnek kell megnyílnia az Ubuntu szerver konfigurált fiókjával.

Ha a kulcsalapú hitelesítés sikeres volt, folytassa, hogy megtudja, hogyan lehet tovább védeni a rendszert a jelszó-hitelesítés letiltásával.

4. lépés-tiltsa le a jelszó-hitelesítést a kiszolgálón

Ha jelszó nélkül tudott bejelentkezni fiókjába SSH-val, akkor sikeresen konfigurálta az SSH-kulcs alapú hitelesítést a fiókjához. A jelszó alapú hitelesítési mechanizmus azonban továbbra is aktív, ami azt jelenti, hogy a szerver továbbra is ki van téve a brute-force támadásoknak.

a szakasz lépéseinek végrehajtása előtt győződjön meg arról, hogy vagy SSH-kulcs alapú hitelesítést konfigurált a kiszolgáló gyökérfiókjához, vagy lehetőleg SSH-kulcs alapú hitelesítést konfigurált egy nem root fiókhoz ezen a kiszolgálón sudo jogosultságokkal. Ez a lépés lezárja a jelszóalapú bejelentkezéseket, így döntő fontosságú annak biztosítása, hogy továbbra is adminisztratív hozzáférést kapjon.

miután megerősítette, hogy távoli fiókja rendelkezik rendszergazdai jogosultságokkal, jelentkezzen be a távoli kiszolgálóra SSH kulcsokkal, akár root-ként, akár sudo jogosultságokkal rendelkező fiókkal. Ezután nyissa meg az SSH démon konfigurációs fájlját:

  • sudo nano /etc/ssh/sshd_config

a fájlban keresse meg a PasswordAuthenticationnevű irányelvet. Ezt meg lehet kommentálni. Távolítsa el a sort, és állítsa az értéket “nem” – re. Ez letiltja az SSH-n keresztüli bejelentkezés lehetőségét fiók jelszavak használatával:

/etc/ssh/sshd_config
...PasswordAuthentication no...

mentse és zárja be a fájlt, ha befejezte a CTRLX, majd Y a fájl mentésének megerősítéséhez, végül ENTER a nano-ból való kilépéshez. A módosítások tényleges végrehajtásához újra kell indítanunk a sshd szolgáltatás:

  • sudo systemctl restart ssh

elővigyázatosságból nyisson meg egy új terminál ablakot, és ellenőrizze, hogy az SSH szolgáltatás megfelelően működik-e a munkamenet bezárása előtt:

  • ssh username@remote_host

miután ellenőrizte az SSH szolgáltatást, biztonságosan bezárhatja az összes aktuális szerver munkamenetet.

az Ubuntu szerver SSH démonja most csak az SSH kulcsokra reagál. A jelszó alapú hitelesítés sikeresen le van tiltva.

következtetés

a kiszolgálón konfigurálnia kell az SSH-kulcs alapú hitelesítést, amely lehetővé teszi a bejelentkezést fiókjelszó megadása nélkül.

Ha többet szeretne megtudni az SSH használatával kapcsolatban, tekintse meg SSH Essentials útmutatónkat.



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

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