Nastavite varno prijavo brez gesla v oddaljeni strežnik Ubuntu s ključi SSH
SSH je varen omrežni protokol odjemalec-strežnik, ki odjemalskemu računalniku pomaga pri povezovanju in komunikaciji z oddaljenim strežnikom. Povezava SSH zagotavlja, da se ukazi, ki so vneseni v terminal, pošljejo oddaljenemu strežniku preko šifriranega kanala.
Za povezavo z oddaljenim strežnikom se uporabljata dve vrsti mehanizmov za preverjanje pristnosti, preverjanje pristnosti na podlagi gesla (nagnjeno k napadom brutalne sile) in preverjanje pristnosti na podlagi ključev SSH (ki je zelo varno).
Pri preverjanju pristnosti, ki temelji na ključu SSH, se na odjemalskem računalniku ustvari par ključev, ki se imenuje javni ključ in zasebni ključ. Kopija tega javnega ključa je na voljo na oddaljenem strežniku. Ko odjemalec strežniku pošlje zahtevo za povezavo, strežnik ustvari naključni niz in ga šifrira z javnim ključem. Ta niz je mogoče dešifrirati samo z zasebnim ključem, ki je na voljo v odjemalskem računalniku. Ta metoda zagotavlja, da lahko do strežnika dostopajo samo odjemalci, ki vsebujejo zasebni ključ.
V tem priročniku bomo videli, kako nastaviti ključe SSH na strežniku Ubuntu 20.04 LTS.
Preverite, ali imate v računalniku obstoječe ključe SSH
Če želite preveriti, ali par ključev SSH že obstaja v vašem računalniku, vnesite ta ukaz v terminal.
ls -l ~/.ssh/id_*.pub
Če se zgornji ukaz vrne ni takšne datoteke ali imenika
oz ni bilo najdenih ujemanj
, potem to pomeni, da par ključev SSH ne obstaja.
Če imate obstoječ par ključev SSH, lahko uporabite isti par ključev za dostop do dveh oddaljenih strežnikov ali pa ustvarite drug par ključev z drugačnim imenom. Pojdimo na naslednji korak in poglejmo, kako ustvariti ključe SSH za oba primera.
Ustvarjanje ključev SSH na odjemalskem računalniku
Če želite v računalniku ustvariti nov par ključev SSH, vnesite ukaz, kot je prikazano spodaj.
ssh-keygen
Privzeto so ključi SSH 2048-bitni. Za boljšo varnost, če želite ustvariti ključe SSH z višjimi biti, uporabite naslednji ukaz.
ssh-keygen -b 4096
Če se ukaz uspešno zažene, se na vašem zaslonu prikaže naslednje sporočilo.
generiranje para ključev javni/zasebni rsa. Vnesite datoteko, v katero želite shraniti ključ (/home/harshit/.ssh/id_rsa):
Zdaj, če v računalniku nimate nobenega obstoječega para ključev SSH, preprosto pritisnite Vnesite
, če pa imate obstoječi ključ SSH, shranite ključ z drugim imenom datoteke, kot je prikazano spodaj.
Vnesite datoteko, v katero želite shraniti ključ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx
Zamenjajte xxx
na koncu imena datoteke z ustreznim imenom, kot je prikazano spodaj in pritisnite Vnesite
.
Vnesite datoteko, v katero želite shraniti ključ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1
Naslednji poziv vas bo pozval, da vnesete geslo poljubne dolžine, kar bo zagotovilo dvostopenjsko varnost na vaši napravi.
Vnesite geslo (prazno, če ni gesla): znova vnesite isto geslo:
Vnos tega gesla bo zagotovil, da tudi če oseba dobi dostop do vašega zasebnega ključa, ne bo mogla dostopati do vašega oddaljenega strežnika brez tega gesla.
Ko je celoten postopek končan, se na zaslonu prikaže naslednje sporočilo.
Ključi SSH so bili ustvarjeni v vašem sistemu. Zdaj je čas, da kopirate javni ključ na oddaljeni strežnik.
Kopiranje javnega ključa na oddaljeni strežnik Ubuntu
Najlažji in najhitrejši način za kopiranje javnega ključa na oddaljeni strežnik je uporaba ssh-copy-id
uporabnost. Če pa ta pripomoček iz nekega razloga ni na voljo na vašem računalniku, lahko uporabite tudi druge metode, navedene v tem razdelku.
Uporaba pripomočka ssh-copy-id
The ssh-copy-id
pripomoček je privzeto na voljo na vašem računalniku Ubuntu, ki kopira javni ključ iz vaše naprave v ustrezen imenik vaše oddaljene naprave Ubuntu.
Če želite kopirati javni ključ ssh, preprosto vnesite ukaz v svoj terminal, kot je prikazano spodaj.
ssh-copy-id uporabniško ime@ime gostitelja
Zamenjajte uporabniško ime
in ime gostitelja
v zgornjem ukazu z uporabniškim imenom in imenom gostitelja vašega strežnika.
Če se prvič povezujete z gostiteljem, se na vašem terminalu prikaže naslednje sporočilo, vnesite da
in pritisnite Vnesite
.
Pristnosti gostitelja "172.105.XX.XX (172.105.XX.XX)" ni mogoče ugotoviti. Prstni odtis ključa ECDSA je xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Ali ste prepričani, da želite nadaljevati povezavo (da/ne)? da
Zdaj pa ssh-copy-id
pripomoček bo poiskal datoteko z imenom id_rsa.pub
ki vsebuje javni ključ SSH. Ko je postopek skeniranja končan, vas bo pozval, da vnesete geslo vašega oddaljenega strežnika, kot je prikazano spodaj. Vnesite geslo in pritisnite Vnesite
.
/usr/bin/ssh-copy-id: INFO: poskušam se prijaviti z novim(-i) ključ(i), da filtriram vse, ki so že nameščeni /usr/bin/ssh-copy-id: INFO: 1 ključ(i) ) še ni treba namestiti - če boste zdaj pozvani, morate namestiti geslo za nove ključe [email protected]:
Ko je ključ dodan, se na vašem terminalu kot izhod prikaže naslednje sporočilo.
Število dodanih ključev: 1 Zdaj se poskusite prijaviti v napravo z: "ssh '[email protected]'" in preverite, ali so bili dodani samo ključi, ki ste jih želeli.
Če imate na odjemalskem računalniku več ključev SSH, za kopiranje ustreznega javnega ključa v oddaljeni računalnik vnesite ukaz v spodnjem vzorcu.
ssh-copy-id -i id_rsa_xxx.pub uporabniško ime@gostitelj
💡 Nasvet
Ne pozabite vstaviti .pub na konec imena datoteke, medtem ko tipkate v terminal.
Kopiranje javnega ključa po cevovodni metodi
V terminal if vnesite naslednji ukaz ssh-copy-id
pripomoček ni na voljo. Ta ukaz se morda zdi nekoliko daljši, vendar deluje ustrezno.
mačka ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Zamenjati oddaljeno_uporabniško ime
in server_ip_address
z vašim uporabniškim imenom in naslovom IP.
Če imate v računalniku na voljo več ključev SSH, zamenjajte id_rsa.pub
z javno datoteko ključev SSH po vaši izbiri. na primer id_rsa_client_1.pub
.
Ko ste pozvani, vnesite geslo oddaljenega uporabnika in pritisnite Vnesite
.
geslo [email protected]:
Ko vnesete geslo, se id_rsa.pub
datoteka bo kopirana v avtorizirani_ključi
datoteko oddaljenega strežnika.
Ročno kopiranje javnega ključa
To metodo uporabite, če nimate dostopa do oddaljenega sistema prek preverjanja pristnosti z geslom.
Odprite id_rsa.pub
datoteko z uporabo mačka
ukaz v terminalu. Odprete ga lahko tudi iz urejevalnika besedil, namen je samo kopiranje vsebine datoteke.
mačka ~/.ssh/id_rsa.pub
Vsebina datoteke bo videti tako, kot je prikazano spodaj.
ssh-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH vaše_ime @ your_PC
Zdaj se prijavite v svoj oddaljeni strežnik in prilepite kopirano vsebino z ukazom, prikazanim spodaj. Zamenjajte zgornji_niz
s kopirano vsebino.
echo above_string >> ~/.ssh/authorized_keys
Konfiguriranje več ključev SSH (izbirno)
Ta korak je za ljudi, ki imajo na odjemalskem računalniku nastavljenih več ključev SSH. Preskočite ta razdelek, če imate samo eno nastavitev ključa SSH.
Za upravljanje več ključev SSH bomo zdaj ustvarili a konfigur
datoteko znotraj .ssh
imenik z ukazom, prikazanim spodaj.
cd ~/.ssh konfiguracija vim
Vrsta jaz
da vstopite v ukazni način in vnesete podrobnosti o več gostiteljih, kot je prikazano v naslednjem primeru:
Gostitelj oddaljeni-ubuntu-strežnik Ime gostitelja 172.105.XX.XX Uporabniška korenska datoteka identitete ~/.ssh/id_rsa_client_1 Host oddaljeni-ubuntu-strežnik Ime gostitelja 172.106.XX.XX Uporabniška korenska datoteka identitete ~/.ssh/id_rsa_client_2
Podobno vnesite podrobnosti o drugih oddaljenih strežnikih in njihovih ključih. Ko je postopek končan, pritisnite Esc
in :wq
za shranjevanje in izhod.
Zdaj so nadaljnji procesi enaki za oba, ki imajo enega ali več ključev SSH na odjemalskem računalniku.
Prijavite se v oddaljeni strežnik s ključi SSH
Ko je postopek kopiranja vašega javnega ključa končan, se prijavite v svoj oddaljeni strežnik tako, da vnesete ukaz, kot je prikazano spodaj.
ssh oddaljeno_uporabniško ime@naslov_ip_strežnika
Če ste geslo vnesli med generiranjem para ključev, boste pozvani, da ga vnesete. Po končanem postopku preverjanja pristnosti se bo odprla nova seja.
Zdaj ste uspešno konfigurirali preverjanje pristnosti na podlagi ključev SSH na vašem oddaljenem strežniku. Toda preverjanje pristnosti na podlagi gesla je še vedno aktivno na vašem strežniku, kar pomeni, da je vaš oddaljeni strežnik še vedno nagnjen k napadom s surovo silo.
Tako bomo zdaj popolnoma onemogočili mehanizem za prijavo na podlagi gesla z našega oddaljenega strežnika.
Onemogoči mehanizem za prijavo, ki temelji na geslu
Preden naredite kakršne koli spremembe, se prepričajte, da ima root uporabnik ali kateri koli uporabnik, ki je omogočen za sudo za vaš oddaljeni račun, dostop do vašega strežnika z uporabo sistema za preverjanje pristnosti, ki temelji na ključu SSH. Ta korak bo popolnoma zaklenil ali onemogočil prijavo na podlagi gesla, zato je ključnega pomena, da ima vsaj en uporabniški korenski privilegij dostop do strežnika prek ključa SSH.
Prijavite se v svoj oddaljeni strežnik Ubuntu in vnesite spodnji ukaz.
sudo vim /etc/ssh/sshd_config
- Pritisnite
Esc
,/
in vnesite »PasswordAuthentication« in pritisnitevstopi
. - Zdaj pritisnite
jaz
in spremenite vrednost »PasswordAuthentication da« v »PasswordAuthentication ne«. - Pritisnite
Esc
in ponovite zgornji postopek, da poiščete 'ChallengeResponseAuthentication', 'UsePAM' in spremenite njihove vrednosti všt
tudi
PasswordAuthentication brez ChallengeResponseAuthentication brez UsePAM št
Ko so vse vrednosti nastavljene na št
, pritisnite Esc
, tip :wq
in zadel vstopi
.
Če želite aktivirati vse spremembe, znova zaženite ssh
storitev s spodnjim ukazom.
sudo systemctl znova zaženi ssh
Zdaj odprite novo terminalsko okno v računalniku in preverite, ali preverjanje pristnosti ključa SSH deluje pravilno, preden zaprete trenutno sejo.
Ko je postopek preverjanja končan, zaprite vse tekoče seje.
Zdaj smo uspešno konfigurirali preverjanje pristnosti na osnovi ključa SSH na našem strežniku Ubuntu 20.04. Zdaj se nihče ne more prijaviti v vaš strežnik z uporabo mehanizma za prijavo, ki temelji na geslu.