Използване на SSH за свързване с отдалечен сървър
Какво е SSH и как работи?
SSH, или Secure Shell, е протокол, който се използва за сигурен отдалечен достъп до компютърни системи през несигурни мрежи. Той осигурява криптирана връзка между клиент и сървър, което елиминира възможността трети страни да прихванат данни. Принципът на SSH се основава на асиметрично криптиране: при установяване на връзка клиентът създава двойка ключове - публичен и частен. Публичният ключ се предава на сървъра, който го използва за криптиране на данните, изпращани на клиента. Частният ключ остава от страна на клиента и се използва за декриптиране на получената информация. Това осигурява високо ниво на сигурност, тъй като дори в случай на прихващане на данни, нападателите няма да могат да ги декриптират без частния ключ. SSH поддържа и удостоверяване на потребителя, което гарантира, че само упълномощени лица имат достъп до системата. Протоколът се използва широко от системните администратори за отдалечено управление на сървъри, както и за сигурно прехвърляне на файлове чрез SCP и SFTP. Разбирането на начина на работа на SSH е важна стъпка към защитата на вашите данни и системи в днешния цифров свят.Свързване с отдалечен сървър чрез SSH
Свързването с отдалечен сървър чрез SSH (Secure Shell) е важна част от работата на системните администратори и разработчиците. SSH осигурява сигурен и криптиран канал за комуникация между локалния ви компютър и отдалечения сървър, като ви позволява да управлявате, прехвърляте файлове и изпълнявате команди без риск от прихващане на данни. За да установите връзка, ще ви е необходим SSH клиент, като например PuTTY за Windows или вградения терминал в Linux и macOS. Процесът на свързване започва с въвеждане на команда:ssh hostname
където hostname е IP адресът или името на домейна на сървъра.Тази команда предполага, че потребителското ви име в отдалечената система е същото като това в локалната система. Ако локалното ви потребителско име е различно от това на отдалечената система, можете да го посочите, като използвате следния формат на командата:
ssh username@hostname
където username е потребителското име на отдалечения сървър.След това системата ще поиска парола, ако удостоверяването не е конфигурирано чрез SSH ключове.
За да прекратите SSH сесията и да се върнете към локалния шел на устройството, въведете следната команда:
exit
Конфигуриране на SSH сървър
Конфигурирането на SSH сървър е ключов процес за осигуряване на отдалечен достъп до вашия сървър. Конфигурационният файл на SSH сървъра се намира в /etc/ssh/sshd_config. Правилната конфигурация на SSH сървъра не само ще защити данните ви, но и ще осигури надеждно и удобно управление на сървъра.Силно препоръчително е да направите резервно копие на конфигурационния файл, преди да правите каквито и да било промени:
cp /etc/ssh/sshd_config{,.orig}
Тази команда ще копира файла /etc/ssh/sshd_config в /etc/ssh/sshd_config.orig, което ще ви позволи да върнете изходния файл по всяко време, ако имате проблеми.Можете да отворите файла в редактора nano:
nano /etc/ssh/sshd_config
Преди всичко ви съветваме да обърнете внимание на порта, на който работи SSH. По подразбиране това е порт 22.
Port 22От съображения за сигурност в някои случаи най-доброто решение е именно промяната на порта.
SyslogFacility AUTHТези редове в конфигурацията показват нивата на регистриране на събития.
LogLevel INFO
LoginGraceTime 120Този параметър задава времето в секунди, за което сървърът ще запази връзката, ако няма успешни опити за влизане.
PermitRootLogin yesПоказва дали SSH оторизацията е разрешена за потребителя root.
StrictModes yesАктивирането на строг режим предотвратява оторизациите в системата, когато файловете за удостоверяване могат да се четат от всички.
За да направите промени, запазете файла, като въведете CTRL+O и след това CTRL+X. След това е необходимо услугата SSH да прочете отново новите параметри. Можете да направите това с командата:
systemctl reload ssh
Използване на ключове за SSH удостоверяване
Използването на ключове за SSH удостоверяване е важен аспект на сигурността при отдалечен достъп до сървъри. SSH позволява на потребителите да се свързват сигурно със системи през несигурни мрежи. Вместо традиционния метод за удостоверяване с парола, който е податлив на атаки, използването на SSH ключове осигурява по-високо ниво на защита. Ключовете се състоят от две части: частен ключ и публичен ключ. Частният ключ се съхранява на локалното устройство, а публичният ключ се качва на сървъра. При свързване се извършва проверка: сървърът криптира съобщението, като използва публичния ключ, и само собственикът на частния ключ може да го декриптира, което потвърждава неговата самоличност. Създаването на SSH ключове е по-лесно, отколкото изглежда: с командата ssh-keygen можете бързо да генерирате двойка ключове. Важно е също така да персонализирате конфигурационния файл на SSH, за да подобрите сигурността, като деактивирате удостоверяването с парола и разрешите достъп само с ключове. Този подход не само защитава данните ви, но и опростява процеса на влизане в сървърите, което е особено полезно за администратори и разработчици. Внедряването на удостоверяване с ключове в SSH е стъпка към по-сигурно и ефективно управление на системите.Препоръчваме да използвате по-дълги ключове:
ssh-keygen -b 4096
Минималният размер на ключа RSA е 1024 бита, а по подразбиране е 3072 бита.По подразбиране се създава тип ключ RSA, но можете да посочите друг тип, например ecdsa:
ssh-keygen -t ecdsa
Но е препоръчително да се използват ключове RSA.Помощната програма ssh-keygen записва ключовете в директорията ~/.ssh. Проверете дали двойката ключове, която току-що създадохте, е там:
ls -l ~/.ssh
Прехвърляне на публичния ключ към сървъра
Предаването на публичния ключ на сървъра е важна стъпка в защитата на данните и установяването на силна криптирана връзка. Този процес включва генериране на двойка ключове, в която публичният ключ се използва за криптиране на информацията, а частният ключ - за декриптирането ѝ. Важно е да се гарантира, че публичният ключ се изпраща на сървъра по сигурен начин, например чрез защитени канали или с помощта на цифрови сертификати, които удостоверяват ключа. След като ключът бъде успешно предаден, сървърът проверява неговата цялост и коректност, което позволява да се установи криптирана връзка между клиента и сървъра. В резултат на това всички данни, предавани чрез тази връзка, са защитени от неоторизиран достъп. С предаването на публичния ключ значително повишавате нивото на сигурност на услугата си и защитавате поверителната информация на потребителите. Използването на съвременни методи за криптиране и редовното актуализиране на ключовете ще ви помогне да поддържате високо ниво на защита и доверие от страна на клиентите си.Необходима е само една команда, за да се предаде ключът на сървъра:
ssh-copy-id username@hostname
Когато отворите SSH сесия, ще бъдете подканени да въведете паролата на потребителя.Ако клиентът има няколко SSH ключа, трябва да посочите кой от тях да бъде предаден:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
където ~/.ssh/id_rsa.pub е пътят до публичния сертификат. Следният формат на командата също е приемлив:ssh-copy-id -i ~/.ssh/id_rsa username@hostname
Не бива да се страхувате, че частният ключ ще бъде предаден. Това няма да се случи, командата автоматично ще добави .pub към името на файла.Деактивиране на удостоверяването с парола
Деактивирането на удостоверяването с парола става все по-актуална тема в света на киберсигурността. Мнозина започват да осъзнават, че традиционните пароли могат да бъдат уязвими за хакери и фишинг атаки. С деактивирането на удостоверяването на паролата намалявате риска от неоторизиран достъп до акаунтите си.Предупреждение: Уверете се, че публичният ключ е инсталиран на сървъра и удостоверяването е без грешки. В противен случай можете да блокирате достъпа до сървъра.
За да го деактивирате, трябва да отворите конфигурационния файл:
nano /etc/ssh/sshd_config
След това трябва да настроите PasswordAuthentication на no. Също така трябва да проверите следните параметри и техните стойности:
- PubkeyAuthentication yes - включва удостоверяване с публичен ключ;
- ChallengeResponseAuthentication no (или по-нова стойност KbdInteractiveAuthentication no) - посочва дали да се използва интерактивно удостоверяване на клавиатурата.
След това услугата SSH трябва да се презареди отново.
Други опции при свързване чрез SSH
Когато се свързвате с отдалечени сървъри чрез SSH, си струва да се помисли и за възможността за създаване на конфигурационен файл ~/.ssh/config, който ви позволява да задавате параметри на връзката за различни хостове, като например потребител, порт и път на ключа. Това е особено полезно, ако работите с няколко сървъра. А за да наблюдавате връзките и да отстранявате проблеми, можете да използвате инструменти като ssh -v, за да получите подробна информация за процеса на свързване. Тези опции правят работата със SSH по-ефективна и сигурна, което е особено важно за системните администратори и разработчиците. Още няколко примера по-долу.За да се свържете с порт, различен от порт 22, използвайте параметъра -p:
ssh -p12345 username@hostname
За да изпълните команда на отдалечен сървър със същата команда, с която отваряте сесия, можете просто да напишете:
ssh username@hostname command
където command е отдалечена команда на сървъра.14 Apr 2025, 13:53:39