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:
OutputGenerating 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:
OutputEnter 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:
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 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:
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 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:
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.
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:
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 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:
Outputssh-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:
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 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 PasswordAuthentication
nevű 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:
...PasswordAuthentication no...
mentse és zárja be a fájlt, ha befejezte a CTRL
X
, 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.