Настройте сигурно влизане без парола към вашия отдалечен сървър на Ubuntu с помощта на SSH ключове
SSH е защитен мрежов протокол клиент-сървър, който помага на клиентския компютър да се свързва и комуникира с отдалечен сървър. SSH връзката гарантира, че командите, които се въвеждат в терминала, се изпращат до отдалечения сървър чрез криптиран канал.
Има два типа механизми за удостоверяване, използвани за свързване към отдалечения сървър, удостоверяване, базирано на парола (склонно към атаки с груба сила) и удостоверяване, базирано на SSH ключове (което е много сигурно).
При удостоверяването, базирано на SSH ключ, на клиентския компютър се генерира двойка ключове, наречена публичен ключ и частен ключ. Копие на този публичен ключ се предоставя на отдалечения сървър. Когато клиент изпрати заявка за свързване към сървъра, тогава сървърът генерира произволен низ и го криптира с публичния ключ. Този низ може да бъде декриптиран само с помощта на частния ключ, наличен на клиентския компютър. Този метод гарантира, че сървърът може да бъде достъпен само от клиенти, съдържащи частния ключ.
В това ръководство ще видим как да настроим SSH ключове на Ubuntu 20.04 LTS сървър.
Вижте дали имате съществуващ SSH ключ на вашия компютър
За да проверите дали SSH Keypair вече съществува на вашия компютър, въведете тази команда във вашия терминал.
ls -l ~/.ssh/id_*.pub
Ако горната команда се върне няма такъв файл или директория
или няма намерени съвпадения
, тогава това означава, че двойка ключове SSH не съществува.
Ако имате съществуваща двойка ключове SSH, тогава можете или да използвате една и съща двойка ключове за достъп до два отдалечени сървъра, или можете също да създадете различна двойка ключове с различно име. Нека да преминем към следващата стъпка и да видим как да генерираме SSH ключове и за двата случая.
Създаване на SSH ключове на клиентски компютър
За да генерирате нова двойка SSH ключове на вашия компютър, въведете командата, както е показано по-долу.
ssh-keygen
По подразбиране SSH ключовете са с 2048 бита. За по-добра сигурност, ако искате да генерирате SSH ключове с по-високи битове, използвайте следната команда.
ssh-keygen -b 4096
Ако командата се изпълнява успешно, на екрана ви ще се появи следното съобщение.
генериране на двойка публичен/частен rsa ключ. Въведете файл, в който да запишете ключа (/home/harshit/.ssh/id_rsa):
Сега, ако нямате съществуваща двойка SSH ключове на вашия компютър, просто натиснете Въведете
, но ако имате съществуващ SSH ключ, запазете ключа с различно име на файл, както е показано по-долу.
Въведете файл, в който да запишете ключа (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx
Заменете ххх
в края на името на файла с подходящо име, както е показано по-долу и натиснете Въведете
.
Въведете файл, в който да запишете ключа (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1
Следващата подкана ще ви помоли да въведете парола с произволна дължина, тя ще гарантира сигурност на две нива на вашето устройство.
Въведете парола (празна за липса на пропуск): Въведете отново същата парола:
Въвеждането на тази парола ще гарантира, че дори ако човек получи достъп до вашия частен ключ, той няма да може да получи достъп до отдалечения ви сървър без тази парола.
След като целият процес приключи, на екрана ви се появява следното съобщение.
SSH ключовете са генерирани във вашата система. Сега е време да копирате публичния ключ на отдалечения сървър.
Копиране на публичния ключ към отдалечен сървър на Ubuntu
Най-лесният и бърз метод за копиране на публичния ключ на отдалечения сървър е чрез използване на ssh-copy-id
полезност. Но ако тази помощна програма не е налична на вашата машина поради някаква причина, можете да използвате и други методи, предоставени в този раздел.
Използване на помощната програма ssh-copy-id
В ssh-copy-id
Помощната програма е налична по подразбиране на вашата Ubuntu машина, която копира публичния ключ от вашето устройство в съответната директория на вашата отдалечена Ubuntu машина.
За да копирате публичния ssh ключ, просто въведете командата във вашия терминал, както е показано по-долу.
ssh-copy-id потребителско име@име на хост
Заменете потребителско име
и име на хост
в горната команда с потребителското име и името на хоста на вашия сървър.
Следното съобщение ще се появи на вашия терминал, ако се свързвате с вашия хост за първи път, въведете да
и натиснете Въведете
.
Автентичността на хост „172.105.XX.XX (172.105.XX.XX)“ не може да бъде установена. Пръстовият отпечатък на ECDSA ключ е xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Наистина ли искате да продължите да се свързвате (да/не)? да
Сега на ssh-copy-id
помощната програма ще сканира за файла с името id_rsa.pub
който съдържа публичния SSH ключ. След като процесът на сканиране приключи, той ще ви подкани да въведете паролата на вашия отдалечен сървър, както е показано по-долу. Въведете паролата и натиснете Въведете
.
/usr/bin/ssh-copy-id: ИНФОРМАЦИЯ: опит за влизане с новите ключове, за филтриране на всички, които вече са инсталирани /usr/bin/ssh-copy-id: ИНФОРМАЦИЯ: 1 ключ(ове) ) остават да бъдат инсталирани - ако бъдете подканени сега, това е да инсталирате паролата на новите ключове [email protected]:
След като ключът бъде добавен, следното съобщение ще се появи на вашия терминал като изход.
Брой добавени ключ(ове): 1 Сега опитайте да влезете в машината с: "ssh '[email protected]'" и проверете, за да сте сигурни, че са добавени само ключовете, които искате.
В случай, че имате множество SSH ключове на вашия клиентски компютър, тогава, за да копирате подходящия публичен ключ на вашия отдалечен компютър, въведете командата в шаблона, показан по-долу.
ssh-copy-id -i id_rsa_xxx.pub потребителско име@хост
💡 Съвет
Не забравяйте да поставите .pub в края на името на файла, докато пишете в терминала.
Копиране на публичния ключ по метода на тръбопровода
Въведете следната команда в терминала if ssh-copy-id
помощната програма не е налична. Тази команда може да изглежда малко по-дълга, но работи правилно.
котка ~/.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"
Сменете дистанционно_потребителско име
и IP_адрес на сървъра
с вашето потребителско име и IP адрес.
Ако имате няколко налични SSH ключа на вашия компютър, заменете id_rsa.pub
с публичния SSH ключов файл по ваш избор. Например, id_rsa_client_1.pub
.
Въведете паролата за отдалечен потребител, когато бъдете подканени и натиснете Въведете
.
паролата на [email protected]:
След като въведете паролата, id_rsa.pub
файл ще бъде копиран в авторизирани_ключове
файл на отдалечения сървър.
Ръчно копиране на публичния ключ
Използвайте този метод, когато нямате достъп до вашата отдалечена система чрез удостоверяване с парола.
Отвори id_rsa.pub
файл с помощта на котка
команда в терминала. Можете да го отворите и от текстов редактор, целта е само да копирате съдържанието на файла.
котка ~/.ssh/id_rsa.pub
Съдържанието на файла ще изглежда така, както е показано по-долу.
SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH своето име @ your_PC
Сега влезте във вашия отдалечен сървър и поставете копираното съдържание, като използвате командата, показана по-долу. Заменете горен_низ
с копираното съдържание.
echo above_string >> ~/.ssh/authorized_keys
Конфигуриране на множество SSH ключове (по избор)
Тази стъпка е за хора, които имат настроени множество SSH ключове на клиентския си компютър. Пропуснете този раздел, ако имате само една настройка на SSH ключ.
За да управляваме множество SSH ключове, сега ще създадем a конфиг
файл вътре в .ssh
директория с помощта на командата, показана по-долу.
cd ~/.ssh vim config
Тип и
за да влезете в команден режим и въведете подробностите за множество хостове, както е показано в следния пример:
Хост отдалечен-ubuntu-сървър Име на хост 172.105.XX.XX Потребителски корен IdentityFile ~/.ssh/id_rsa_client_1 Хост отдалечен-ubuntu-сървър Име на хост 172.106.XX.XX Потребителски корен IdentityFile ~/.ssh/id_rsa_client_
По същия начин въведете подробностите за други отдалечени сървъри и техните ключове. След като процесът приключи, натиснете Esc
и :wq
за запазване и излизане.
Сега следващите процеси са едни и същи и за двата с един или множество SSH ключове на клиентския компютър.
Влезте във вашия отдалечен сървър с помощта на SSH ключове
След като процесът на копиране на вашия публичен ключ приключи, влезте във вашия отдалечен сървър, като въведете командата, както е показано по-долу.
ssh дистанционно_потребителско име@ip_адрес на сървъра
Ако сте предоставили паролата, докато генерирате двойката ключове, ще бъдете подканени да я въведете. След завършване на процеса на удостоверяване ще се отвори нова сесия.
Вече успешно конфигурирахте удостоверяването на базата на SSH ключове на вашия отдалечен сървър. Но удостоверяването, базирано на парола, все още е активно на вашия сървър, това означава, че вашият отдалечен сървър все още е склонен към атаки с груба сила.
Така че сега ще деактивираме напълно базирания на парола механизъм за влизане от нашия отдалечен сървър.
Деактивирайте базирания на парола механизъм за влизане
Преди да направите каквито и да е промени, уверете се, че root потребителят или който и да е с активиран sudo потребител за вашия отдалечен акаунт има достъп до вашия сървър, използвайки системата за удостоверяване, базирана на SSH ключ. Тази стъпка ще заключи или деактивира напълно базираното на парола влизане, така че е изключително важно поне един потребител root права да има достъп до сървъра чрез SSH ключ.
Влезте във вашия отдалечен сървър на Ubuntu и въведете командата, показана по-долу.
sudo vim /etc/ssh/sshd_config
- Натиснете
Esc
,/
и въведете „PasswordAuthentication“ и натиснетевъведете
. - Сега натиснете
и
и променете стойността на „PasswordAuthentication yes“ на „PasswordAuthentication no“. - Натиснете
Esc
и повторете горния процес, за да намерите „ChallengeResponseAuthentication“, „UsePAM“ и променете техните стойности нане
също така.
PasswordAuthentication без ChallengeResponseAuthentication без UsePAM no
След като всички стойности са зададени на не
, Натиснете Esc
, Тип :wq
и удари въведете
.
За да активирате всички промени, рестартирайте ssh
услуга, като използвате командата по-долу.
sudo systemctl рестартирайте ssh
Сега отворете нов прозорец на терминала на вашия компютър и проверете дали удостоверяването на вашия SSH ключ работи правилно, преди да затворите текущата сесия.
След като процесът на проверка приключи, затворете всички работещи сесии.
Вече успешно конфигурирахме удостоверяването, базирано на SSH ключ, на нашия сървър Ubuntu 20.04. Сега никой не може да влезе във вашия сървър с помощта на механизъм за влизане, базиран на парола.