Какво е ssh-keygen и как да го използваме

ssh-keygen

Какво е ssh-keygen?

Ssh-keygenе инструмент за създаване на нови двойки ключове за удостоверяване за SSH. Такива двойки ключове се използват за автоматизиране на влизания и за удостоверяване на хостове

ssh-keygen е команден инструмент в средата на UNIX-базирани операционни системи (като Linux и macOS) , също е наличен в средата на Windows с инсталиран OpenSSH. Този инструмент се използва за генериране, управление и работа с SSH ключове.

SSH ключове и автентификация с публичен ключ

SSH протоколът използва криптография с публичен ключ за удостоверяване на хостове и потребители. Ключовете за удостоверяване, наречени SSH ключове , се създават с помощта на keygen програмата.

SSH въведе удостоверяването с публичен ключ като по-сигурна алтернатива на по-старото .rhosts удостоверяване. Той подобри сигурността, като избягва необходимостта паролата да се съхранява във файлове и елиминира възможността компрометиран сървър да открадне паролата на потребителя.

SSH ключовете обаче са идентификационни данни за удостоверяване точно като паролите. Следователно те трябва да се управляват донякъде аналогично на потребителските имена и пароли. Те трябва да имат правилен процес на прекратяване, така че ключовете да се премахват, когато вече не са необходими.

Избор на алгоритъм и размер на ключа

SSH поддържа няколко алгоритми за публичен ключ и ключове за удостоверяване. Те включват:

rsa – стар алгоритъм, базиран на трудността при разлагане на големи числа. За RSA се препоръчва размер на ключ от поне 2048 бита; 4096 бита е по-добре. RSA остарява и се постига значителен напредък във факторинг. Може да се препоръча избор на различен алгоритъм. Напълно възможно е RSA алгоритъмът да стане практически чуплив в обозримо бъдеще. Всички SSH клиенти поддържат този алгоритъм.

dsa – стар алгоритъм за цифров подпис на правителството на САЩ. Основава се на трудността при изчисляване на дискретни логаритми. С него обикновено се използва ключ с размер 1024. DSA в оригиналната му форма вече не се препоръчва.

ecdsa – нов алгоритъм за цифров подпис, стандартизиран от правителството на САЩ, използващ елиптични криви. Това вероятно е добър алгоритъм за настоящите приложения. Поддържат се само три размера на ключа: 256, 384 и 521 (sic!) бита. Бихме препоръчали винаги да го използвате с 521 бита, тъй като ключовете все още са малки и вероятно по-сигурни от по-малките ключове (въпреки че и те трябва да са безопасни). Повечето SSH клиенти вече поддържат този алгоритъм.

ed25519 – това е нов алгоритъм, добавен в OpenSSH. Поддръжката за него в клиентите все още не е универсална. Следователно използването му в приложения с общо предназначение все още може да не е препоръчително.

Алгоритъмът се избира с помощта на -t опцията и размерът на ключа с помощта на -b опцията:

ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa
ssh-keygen -t ecdsa -b 521
ssh-keygen -t ed25519

Създаване на SSH двойка ключове

Най-лесният начин за генериране на двойка ключове е да се изпълни някоя от горните команди:

Ако желаете ecdsa ключ, просто изпълнете командата:

ssh-keygen -t ecdsa -b 521

Първо, инструментът пита къде да запази файла и как да се казва.

Приемете местоположението по подразбиране, което е .ssh с име id_ecdsa.

Разбира се, може да промените и пътя и името по ваш избор.

След това иска да въведете парола . Паролата се използва за криптиране на ключа, така че да не може да се използва дори ако някой получи файла с частния ключ.

Задаване на име на файл става с помощта на -f опцията.

Например:

ssh-keygen -f ~/.ssh/bai-hui -t ecdsa -b 521

Нека обясним всеки аспект от командата:

-f ~/.ssh/bai-hui: Тази опция (-f) задава името и местоположението на файловете, където ще бъдат запазени ключовете. В този случай името на файла е bai-hui, а ключовете ще бъдат запазени в директорията ~/.ssh/. Директорията ~/.ssh/ е стандартната местоположение за съхранение на SSH ключове на потребителите.

-t ecdsa: Тази опция (-t) задава типа на ключа, който ще бъде генериран. В конкретния случай типът на ключа е ecdsa, което означава, че ще бъде използван алгоритъм с елиптични криви за създаване на ключа.

-b 521: Тази опция (-b) указва битовата дължина на ключа. В този случай битовата дължина е 521 бита. Битовата дължина има пряко влияние върху сигурността на ключа – по-дългите ключове предоставят по-високо ниво на сигурност, но също така изискват повече процесорни ресурси за криптиране и декриптиране.

Копиране публичния ключ на сървъра

За да използвате удостоверяване с публичен ключ, той трябва да бъде копиран на сървъра.

Това може да се направи бързо и удобно с помощта на инструмента ssh-copy-id . Просто изпълнете командата:

ssh-copy-id -i ~/.ssh/bai-hui.pub baihu@10.10.10.81

ssh-copy-id: Това е командата за копиране на публични SSH ключове на отдалечен сървър.

-i ~/.ssh/bai-hui.pub: Тази опция (-i) указва името и местоположението на публичния ключ, който искате да копирате на отдалечения сървър. В този случай публичният ключ, който ще бъде копиран, е bai-hui.pub и той се намира в директорията ~/.ssh/ на вашия локален компютър.

baihui@10.10.10.81: Това е потребителското име (baihui) и IP адресът (10.10.10.81) на отдалечения сървър, на който искате да копирате публичния ключ. Променете го съобразно вашите специфични данни.

Като цяло, тази команда копира съдържанието на публичния ключ bai-hui.pub от вашия локален компютър във файлът ~/.ssh/authorized_keys на отдалечения сървър. След това ще можете да се свържете със сървъра без да въвеждате парола, ако вашият частен ключ съвпада с този, който е асоцииран с публичния ключ на сървъра.

Права на ключовете

Уверете се, че правата на файловете с ключовете на вашата клиентска машина са зададени правилно.

Частният ключ (например, bai-hui) трябва да има права 600, което означава, че само собственикът може да чете и записва във файла.

Публичният ключ (например, bai-hui.pub) трябва да има права 644, което позволява на всеки да го чете, но само собственикът може да го променя.

За да промените правата на файловете, можете да използвате командите chmod на вашата локална машина:

chmod 600 ~/.ssh/bai-hui
chmod 644 ~/.ssh/bai-hui.pub

Допълнителни настройки на сървъра (по избор).

Важно е сървърът ви да е правилно конфигуриран да разрешава вход по ключове, а не само по пароли. За да сте сигурни, че това е настроено, проверете конфигурационния файл на SSH сървъра на сървъра (често намиращ се в /etc/ssh/sshd_config).

Уверете се, че следните настройки са конфигурирани правилно:

PubkeyAuthentication yes
PasswordAuthentication no

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: