Како да поставите SSH клучеви на Rocky Linux 9


Вовед

SSH, или безбедна школка, е шифриран протокол што се користи за администрирање и комуникација со серверите. Кога работите со Rocky Linux сервер, големи се шансите дека ќе го поминете поголемиот дел од вашето време во терминална сесија поврзана со вашиот сервер преку SSH.

Во овој водич, ќе се фокусираме на поставување SSH клучеви за серверот Rocky Linux 9. SSH клучевите обезбедуваат јасен, безбеден метод за најавување на вашиот сервер и се препорачуваат за сите корисници.

Чекор 1 - Креирање на пар клучеви RSA

Првиот чекор е да креирате пар клучеви на клиентската машина (обично вашиот локален компјутер):

  1. ssh-keygen

Стандардно, ssh-keygen ќе создаде 2048-битен пар клучеви RSA, кој е доволно безбеден за повеќето случаи на употреба (опционално може да го пренесете знамето -b 4096 на креирајте поголем 4096-битен клуч).

Откако ќе ја внесете командата, треба да ја видите следната промпт:

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

Притиснете ENTER за да го зачувате парот клучеви во поддиректориумот .ssh/ во вашиот домашен директориум или наведете алтернативна патека.

Ако претходно сте генерирале пар клучеви SSH, може да го видите следново барање:

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

Ако изберете да го презапишете клучот на дискот, не ќе можете повеќе да се автентицирате користејќи го претходниот клуч. Бидете внимателни кога избирате да, бидејќи ова е деструктивен процес што не може да се врати назад.

Потоа треба да го видите следново известување:

Output
Enter passphrase (empty for no passphrase):

Овде можете опционално да внесете безбедна лозинка, која е многу препорачлива. Преодната фраза додава дополнителен слој на безбедност на вашиот клуч, за да спречи неовластени корисници да се најавуваат.

Потоа треба да го видите следниов излез:

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_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

Сега имате јавен и приватен клуч што можете да ги користите за автентикација. Следниот чекор е да го внесете јавниот клуч на вашиот сервер за да можете да користите автентикација базирана на SSH-клуч за да се најавите.

Чекор 2 - Копирање на јавниот клуч на вашиот сервер Rocky Linux

Најбрзиот начин да го копирате вашиот јавен клуч на хостот на Rocky Linux е да користите алатка наречена ssh-copy-id. Овој метод се препорачува ако е достапен. Ако немате ssh-copy-id на располагање на вашата клиентска машина, може да користите еден од двата алтернативни методи што следат (копирање преку SSH базирано на лозинка или рачно копирање на клучот) .

Копирање на вашиот јавен клуч користејќи ssh-copy-id

Алатката ssh-copy-id е стандардно вклучена во многу оперативни системи, така што може да ја имате достапна на вашиот локален систем. За да функционира овој метод, веќе мора да имате SSH пристап до вашиот сервер базиран на лозинка.

За да ја користите алатката, треба само да го наведете оддалечениот хост со кој сакате да се поврзете и корисничката сметка на која имате пристап до лозинка SSH. Ова е сметката на која ќе се копира вашиот јавен SSH клуч:

  1. ssh-copy-id username@remote_host

Може да ја видите следнава порака:

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

Ова значи дека вашиот локален компјутер не го препознава оддалечениот домаќин. Ова ќе се случи првиот пат кога ќе се поврзете со нов домаќин. Напишете да и притиснете ENTER за да продолжите.

Следно, алатката ќе ја скенира вашата локална сметка за клучот id_rsa.pub што го создадовме претходно. Кога ќе го пронајде клучот, ќе ве праша за лозинката на сметката на оддалечениот корисник:

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 keys username@203.0.113.1's password:

Внесете ја лозинката (вашето пишување нема да се прикаже за безбедносни цели) и притиснете ENTER. Алатката ќе се поврзе со сметката на оддалечениот домаќин користејќи ја лозинката што ја наведовте. Потоа ќе ја копира содржината на вашиот клуч ~/.ssh/id_rsa.pub во датотеката ~/.ssh/authorized_keys на оддалечената сметка.

Треба да го видите следниов излез:

Output
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

Во овој момент, вашиот клуч id_rsa.pub е поставен на оддалечената сметка. Можете да продолжите на чекор 3.

Копирање на јавен клуч користејќи SSH

Ако немате достапен ssh-copy-id, но имате SSH пристап базиран на лозинка до сметка на вашиот сервер, можете да ги поставите вашите клучеви користејќи поконвенционален SSH метод.

Можеме да го направиме ова со користење на командата cat за да ја прочитаме содржината на јавниот SSH клуч на нашиот локален компјутер и да го пренесеме преку SSH врска со оддалечениот сервер.

Од друга страна, можеме да се увериме дека директориумот ~/.ssh постои и ги има точните дозволи за сметката што ја користиме.

Потоа можеме да ја изведеме содржината што ја префрливме во датотека наречена authorized_keys во овој директориум. Ќе го користиме симболот за пренасочување >> за да ја додадеме содржината наместо да ја презапишуваме. Ова ќе ни овозможи да додаваме клучеви без да ги уништиме претходно додадените клучеви.

Целосната команда изгледа вака:

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

Може да ја видите следнава порака:

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

Ова значи дека вашиот локален компјутер не го препознава оддалечениот домаќин. Ова ќе се случи првиот пат кога ќе се поврзете со нов домаќин. Напишете да и притиснете ENTER за да продолжите.

Потоа, треба да биде побарано да ја внесете лозинката за далечинската корисничка сметка:

Output
username@203.0.113.1's password:

Откако ќе ја внесете лозинката, содржината на вашиот клуч id_rsa.pub ќе се копира на крајот од датотеката authorized_keys на сметката на оддалечениот корисник. Ако ова беше успешно, продолжете на чекор 3.

Рачно копирање на јавен клуч

Ако немате достапен SSH пристап до вашиот сервер базиран на лозинка, ќе мора рачно да го завршите горенаведениот процес.

Ние рачно ќе ја додадеме содржината на вашата датотека id_rsa.pub во датотеката ~/.ssh/authorized_keys на вашата оддалечена машина.

За да ја прикажете содржината на вашиот клуч id_rsa.pub, напишете го ова на вашиот локален компјутер:

  1. cat ~/.ssh/id_rsa.pub

Ќе ја видите содржината на клучот, која треба да изгледа вака:

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== sammy@host

Најавете се на вашиот далечински хост користејќи кој метод што го имате на располагање.

Откако ќе имате пристап до вашата сметка на оддалечениот сервер, треба да бидете сигурни дека директориумот ~/.ssh постои. Оваа команда ќе го креира директориумот ако е потребно, или не прави ништо ако веќе постои:

  1. mkdir -p ~/.ssh

Сега, можете да ја креирате или менувате датотеката authorized_keys во овој директориум. Можете да ја додадете содржината на вашата датотека id_rsa.pub на крајот од датотеката authorized_keys, креирајќи ја доколку е потребно, користејќи ја оваа команда:

  1. echo public_key_string >> ~/.ssh/authorized_keys

Во горната команда, заменете ја public_key_string со излезот од командата cat ~/.ssh/id_rsa.pub што сте ја извршиле на вашата локална систем. Треба да започне со ssh-rsa AAAA....

Конечно, ќе се погрижиме директориумот ~/.ssh и датотеката authorized_keys да ги имаат поставените соодветни дозволи:

  1. chmod -R go= ~/.ssh

Ова рекурзивно ги отстранува сите дозволи за \група и \други за директориумот ~/.ssh/.

Ако ја користите сметката root за поставување клучеви за корисничка сметка, исто така е важно директориумот ~/.ssh да му припаѓа на корисникот, а не на root:

  1. chown -R sammy:sammy ~/.ssh

Во ова упатство нашиот корисник се вика sammy но треба да го замените соодветното корисничко име во горната команда.

Сега можеме да се обидеме со автентикација базирана на клучеви со нашиот сервер Rocky Linux.

Чекор 3 - Најавете се на вашиот сервер Rocky Linux користејќи SSH клучеви

Ако успешно сте завршиле една од горенаведените процедури, сега треба да можете да се најавите во далечинскиот хост без лозинката на далечинската сметка.

Почетниот процес е ист како кај автентикацијата базирана на лозинка:

  1. ssh username@remote_host

Ако ова е вашиот прв пат да се поврзете со овој домаќин (ако сте го користеле последниот метод погоре), може да видите нешто како ова:

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

Ова значи дека вашиот локален компјутер не го препознава оддалечениот домаќин. Напишете да и потоа притиснете ENTER за да продолжите.

Ако не сте дале лозинка при креирањето на вашиот пар клучеви во чекор 1, веднаш ќе бидете најавени. Ако сте доставиле лозинка, од вас ќе биде побарано да ја внесете сега. По автентикацијата, треба да ви се отвори нова сесија на школка со конфигурираната сметка на серверот Rocky Linux.

Ако автентикацијата базирана на клучеви беше успешна, продолжете да учите како дополнително да го заштитите вашиот систем со оневозможување на автентикацијата базирана на лозинка на вашиот SSH сервер.

Чекор 4 - Оневозможување на автентикација со лозинка на вашиот сервер

Ако можевте да се најавите на вашата сметка користејќи SSH без лозинка, успешно сте ја конфигурирале автентикацијата базирана на SSH-клуч на вашата сметка. Сепак, вашиот механизам за автентикација базиран на лозинка е сè уште активен, што значи дека вашиот сервер сè уште е изложен на напади со брутална сила.

Пред да ги завршите чекорите во овој дел, проверете дали имате конфигурирана автентикација заснована на SSH-клуч за root сметката на овој сервер или по можност, дека имате конфигурирана автентикација базирана на SSH-клуч не-root сметка на овој сервер со привилегии sudo. Овој чекор ќе ги заклучи најавувањата засновани на лозинка, така што е од клучно значење да се осигурате дека сè уште ќе можете да добиете административен пристап.

Откако ќе потврдите дека вашата далечинска сметка има административни привилегии, најавете се на вашиот далечински сервер со SSH клучеви, или како root или со сметка со привилегии sudo. Потоа, отворете ја конфигурациската датотека на демонот SSH:

  1. sudo vi /etc/ssh/sshd_config

Внатре во датотеката, побарајте директива наречена PasswordAuthentication. Ова може да се коментира со хаш #. Притиснете i за да го ставите vi во режим на вметнување, а потоа откоментирајте ја линијата и поставете ја вредноста на no. Ова ќе ја оневозможи вашата способност да се најавите преку SSH користејќи лозинки на сметката:

...
PasswordAuthentication no
...

Кога ќе завршите со промените, притиснете ESC и потоа :wq за да ги напишете промените во датотеката и да излезете. За да ги имплементираме овие промени, треба да ја рестартираме услугата sshd:

  1. sudo systemctl restart sshd

Како мерка на претпазливост, отворете нов терминален прозорец и тестирајте дали услугата SSH функционира правилно пред да ја затворите вашата тековна сесија:

  1. ssh username@remote_host

Откако ќе потврдите дека вашата SSH услуга сè уште работи правилно, можете безбедно да ги затворите сите тековни сесии на серверот.

SSH демонот на вашиот сервер Rocky Linux сега одговара само на SSH клучеви. Автентикацијата базирана на лозинка е успешно оневозможена.

Заклучок

Сега треба да имате конфигурирана автентикација базирана на SSH на вашиот сервер, што ќе ви овозможи да се најавите без да обезбедите лозинка за сметката.

Ако сакате да дознаете повеќе за работата со SSH, погледнете го нашиот водич за SSH Essentials.