Mag-set up ng secure na login na walang password sa iyong remote na server ng Ubuntu gamit ang mga SSH key
Ang SSH ay isang secure na client-server network protocol na tumutulong sa isang client computer na kumonekta at makipag-usap sa isang malayuang server. Tinitiyak ng koneksyon ng SSH na ang mga command na nai-type sa terminal ay ipinapadala sa malayong server sa pamamagitan ng isang naka-encrypt na channel.
Mayroong dalawang uri ng mga mekanismo ng pagpapatotoo na ginagamit upang kumonekta sa malayong server, ang pagpapatotoo na batay sa password (madaling kapitan ng mga pag-atake ng Brute-force) at pagpapatotoo batay sa SSH Keys (na napaka-secure).
Sa SSH key-based authentication, isang key pair ang nabuo sa client computer, na tinatawag na public key at private key. Ang isang kopya ng pampublikong key na ito ay ginawang available sa malayong server. Kapag nagpadala ang isang kliyente ng kahilingan sa koneksyon sa server, bubuo ang server ng random na string at ine-encrypt ito gamit ang pampublikong key. Made-decrypt lang ang string na ito gamit ang pribadong key na available sa computer ng kliyente. Tinitiyak ng pamamaraang ito na ang server ay maa-access lamang ng mga kliyenteng naglalaman ng pribadong key.
Sa gabay na ito, makikita natin kung paano mag-set up ng SSH Keys sa Ubuntu 20.04 LTS server.
Tingnan kung mayroon kang anumang SSH Key sa iyong computer
Upang suriin kung mayroon nang SSH Keypair sa iyong computer i-type ang command na ito sa iyong terminal.
ls -l ~/.ssh/id_*.pub
Kung bumalik ang command sa itaas walang ganoong file o direktoryo
o walang nakitang tugma
, ibig sabihin ay wala ang pares ng SSH Key.
Kung mayroon kang umiiral na pares ng SSH key, maaari mong gamitin ang parehong pares ng key upang ma-access ang dalawang malalayong server, o maaari ka ring lumikha ng ibang pares ng key na may ibang pangalan. Lumipat tayo sa susunod na hakbang at tingnan kung paano bumuo ng mga SSH key para sa parehong mga kaso.
Paglikha ng SSH Keys sa isang Client Computer
Upang makabuo ng bagong pares ng SSH key sa iyong computer i-type ang command tulad ng ipinapakita sa ibaba.
ssh-keygen
Bilang default, ang mga SSH key ay 2048 bit. Para sa mas mahusay na seguridad, kung gusto mong bumuo ng mga SSH key na may mas matataas na bit, pagkatapos ay gamitin ang sumusunod na command.
ssh-keygen -b 4096
Kung matagumpay na tumakbo ang command, ipo-prompt ang sumusunod na mensahe sa iyong screen.
pagbuo ng pampubliko/pribadong rsa key na pares. Ipasok ang file kung saan ise-save ang key (/home/harshit/.ssh/id_rsa):
Ngayon kung wala kang anumang umiiral na pares ng SSH key sa iyong computer pagkatapos ay pindutin lamang Pumasok
, ngunit kung mayroon kang umiiral na SSH key pagkatapos ay i-save ang key na may ibang pangalan ng file tulad ng ipinapakita sa ibaba.
Ilagay ang file kung saan ise-save ang key (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx
Palitan ANG xxx
sa dulo ng pangalan ng file na may naaangkop na pangalan, tulad ng ipinapakita sa ibaba at pindutin Pumasok
.
Ilagay ang file kung saan ise-save ang key (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1
Hihilingin sa iyo ng susunod na prompt na magpasok ng isang passphrase na may di-makatwirang haba, titiyakin nito ang dalawang antas na seguridad sa iyong device.
Ilagay ang passphrase (walang laman para sa walang passphrase): Ilagay muli ang parehong passphrase:
Ang paglalagay ng passphrase na ito ay titiyakin na kahit na ang isang tao ay makakuha ng access sa iyong pribadong key, hindi niya maa-access ang iyong remote server nang wala ang passphrase na ito.
Kapag kumpleto na ang buong proseso, lalabas ang sumusunod na mensahe sa iyong screen.
Ang SSH Keys ay nabuo sa iyong system. Ngayon ay oras na upang kopyahin ang pampublikong susi sa malayong server.
Kinokopya ang Public key sa Remote Ubuntu Server
Ang pinakamadali at pinakamabilis na paraan upang kopyahin ang Public key sa remote server ay sa pamamagitan ng paggamit ng ssh-copy-id
kagamitan. Ngunit kung ang utility na ito ay hindi magagamit sa iyong makina dahil sa ilang kadahilanan, maaari mo ring gamitin ang iba pang mga pamamaraan na ibinigay sa seksyong ito.
Gamit ang ssh-copy-id utility
Ang ssh-copy-id
Ang utility ay available bilang default sa iyong Ubuntu machine na kinokopya ang pampublikong key mula sa iyong device patungo sa naaangkop na direktoryo ng iyong remote na Ubuntu machine.
Upang kopyahin ang pampublikong ssh key i-type lamang ang command sa iyong terminal, tulad ng ipinapakita sa ibaba.
ssh-copy-id username@hostname
Palitan ANG username
at hostname
sa utos sa itaas na may username at host-name ng iyong server.
Lalabas ang sumusunod na mensahe sa iyong terminal kung kumokonekta ka sa iyong host sa unang pagkakataon, i-type oo
at pindutin Pumasok
.
Ang pagiging tunay ng host' 172.105.XX.XX (172.105.XX.XX)' ay hindi maitatag. Ang ECDSA key fingerprint ay xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Sigurado ka bang gusto mong magpatuloy sa pagkonekta (oo/hindi)? oo
Ngayon ang ssh-copy-id
I-scan ng utility ang file na may pangalan id_rsa.pub
na naglalaman ng pampublikong SSH key. Kapag nakumpleto na ang proseso ng pag-scan, ipo-prompt ka nitong ilagay ang password ng iyong remote server, tulad ng ipinapakita sa ibaba. I-type ang password at pindutin Pumasok
.
/usr/bin/ssh-copy-id: INFO: sinusubukang mag-log in gamit ang (mga) bagong key, upang i-filter ang anumang naka-install na /usr/bin/ssh-copy-id: INFO: 1 (mga) key ) ay mananatiling mai-install -- kung sinenyasan ka ngayon ay i-install ang bagong key na [email protected] na password:
Kapag naidagdag na ang susi, lalabas ang sumusunod na mensahe sa iyong terminal bilang output.
Bilang ng (mga) key na idinagdag: 1 Ngayon subukang mag-log in sa makina, gamit ang: "ssh '[email protected]'" at suriin upang matiyak na ang (mga) key na gusto mo lang ang naidagdag.
Kung sakaling mayroon kang maramihang mga SSH key sa iyong client computer pagkatapos ay upang kopyahin ang naaangkop na pampublikong key sa iyong remote na computer i-type ang command sa pattern na ipinapakita sa ibaba.
ssh-copy-id -i id_rsa_xxx.pub username@host
💡 Tip
Huwag kalimutang ilagay ang .pub sa dulo ng file name habang nagta-type sa terminal.
Pagkopya sa Public Key sa pamamagitan ng piping method
I-type ang sumusunod na command sa terminal kung ssh-copy-id
hindi magagamit ang utility. Ang utos na ito ay maaaring mukhang medyo mas mahaba ngunit ito ay gumagana nang naaangkop.
pusa ~/.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"
Palitan remote_username
at IP address ng server
gamit ang iyong username at IP address.
Kung marami kang SSH key na magagamit sa iyong computer pagkatapos ay palitan ang id_rsa.pub
gamit ang pampublikong SSH key file na iyong pinili. Halimbawa, id_rsa_client_1.pub
.
I-type ang remote user password kapag sinenyasan at pindutin Pumasok
.
[email protected]'s password:
Kapag nai-type mo ang password, ang id_rsa.pub
kokopyahin ang file sa authorized_keys
file ng malayuang server.
Manu-manong pagkopya sa Public Key
Gamitin ang paraang ito kapag wala kang access sa iyong remote system sa pamamagitan ng pagpapatunay ng password.
Buksan ang id_rsa.pub
file gamit ang pusa
utos sa terminal. Maaari mo ring buksan ito mula sa isang text editor, ang layunin ay upang kopyahin lamang ang nilalaman ng file.
pusa ~/.ssh/id_rsa.pub
Ang nilalaman ng file ay magiging hitsura, tulad ng ipinapakita sa ibaba.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH iyong_pangalan @ your_PC
Ngayon, mag-login sa iyong remote server at i-paste ang kinopyang nilalaman gamit ang command na ipinapakita sa ibaba. Palitan ANG above_string
kasama ang kinopyang nilalaman.
echo above_string >> ~/.ssh/authorized_keys
Pag-configure ng maramihang SSH Keys (Opsyonal)
Ang hakbang na ito ay para sa mga taong mayroong maraming SSH Keys na setup sa kanilang client computer. Laktawan ang seksyong ito kung mayroon ka lang isang setup ng SSH Key.
Para pamahalaan ang maramihang SSH Keys, gagawa kami ngayon ng a config
file sa loob ng .ssh
direktoryo gamit ang command na ipinapakita sa ibaba.
cd ~/.ssh vim config
Uri i
upang pumasok sa command mode at i-type ang mga detalye ng maraming host, tulad ng ipinapakita sa sumusunod na halimbawa:
Host remote-ubuntu-server HostName 172.105.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_2
Katulad nito, i-type ang mga detalye ng iba pang malalayong server at ang kanilang mga susi. Kapag kumpleto na ang proseso pindutin Esc
at :wq
upang i-save at lumabas.
Ngayon ang mga kasunod na proseso ay pareho para sa parehong pagkakaroon ng isa o maramihang SSH Key sa client computer.
Mag-login sa iyong remote server gamit ang mga SSH key
Kapag kumpleto na ang proseso ng pagkopya sa iyong Public key, mag-log in sa iyong remote server sa pamamagitan ng pag-type ng command tulad ng ipinapakita sa ibaba.
ssh remote_username@server_ip_address
Kung ibinigay mo ang passphrase habang binubuo ang key pair pagkatapos ay ipo-prompt kang ipasok ito. Magbubukas ang isang bagong session pagkatapos makumpleto ang proseso ng pagpapatunay.
Matagumpay mo na ngayong na-configure ang SSH keys based authentication sa iyong remote server. Ngunit ang pagpapatunay na batay sa password ay aktibo pa rin sa iyong server, nangangahulugan ito na ang iyong remoter server ay madaling kapitan ng mga malupit na pag-atake.
Kaya ngayon ay ganap naming idi-disable ang mekanismo sa pag-log in na nakabatay sa password mula sa aming malayong server.
Huwag paganahin ang Mekanismo sa Pag-login na nakabatay sa password
Bago ka gumawa ng anumang mga pagbabago, tiyaking ang root user o sinumang user na pinagana ng sudo para sa iyong malayuang account ay may access sa iyong server gamit ang SSH key-based na authentication system. Ila-lock o idi-disable ng hakbang na ito ang pag-log in na nakabatay sa password nang buo kaya napakahalaga na kahit isang user root privileges ay may access sa server sa pamamagitan ng SSH key.
Mag-login sa iyong remote na server ng Ubuntu at i-type ang command na ipinapakita sa ibaba.
sudo vim /etc/ssh/sshd_config
- Pindutin
Esc
,/
at i-type ang 'PasswordAuthentication' at pindutinpumasok
. - Ngayon pindutin
i
at baguhin ang halaga ng 'PasswordAuthentication yes' sa 'PasswordAuthentication no'. - Pindutin
Esc
at ulitin ang proseso sa itaas upang mahanap ang 'ChallengeResponseAuthentication', 'UsePAM', at baguhin ang kanilang mga halaga sahindi
din.
PasswordAuthentication walang ChallengeResponseAuthentication walang UsePAM no
Kapag ang lahat ng mga halaga ay naitakda sa hindi
, pindutin Esc
, uri :wq
at tamaan pumasok
.
Upang i-activate ang lahat ng mga pagbabago, i-restart ang ssh
serbisyo gamit ang utos sa ibaba.
sudo systemctl i-restart ang ssh
Ngayon magbukas ng bagong terminal window sa iyong computer at i-verify na gumagana nang maayos ang iyong SSH Key authentication bago isara ang kasalukuyang session.
Kapag kumpleto na ang proseso ng pag-verify, isara ang lahat ng tumatakbong session.
Matagumpay na naming na-configure ang SSH Key-based na authentication sa aming Ubuntu 20.04 server. Ngayon walang sinuman ang maaaring mag-log in sa iyong server gamit ang isang password-based na mekanismo sa pag-login.