Затрудняват ли ви публичните SSH ключове? Опитайте едно от тези решения.

SSH е полезен инструмент за свързване с отдалечени машини, но може да попаднете на грешка „Разрешението е отказано (publickey)“, включващо вашия публичен ключ в Linux. За щастие има някои лесни корекции, които можете да опитате, за да го отстраните.

Какво е публичен ключ?

Когато генерирате двойка ключове за SSH на Linux, ще ви бъдат дадени публичен ключ и частен ключ. Частният ключ ще остане при вас като строго пазена тайна, но публичният ключ е това, което ще бъде предадено на отдалечени сървъри, за да ви позволи да влезете без парола. Вашият локален SSH клиент ще съпостави публичния ключ с частния ключ, когато се свържете.

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

OpenSSH, най-широко използваният SSH клиент и сървър в света с отворен код, изисква файлът, съдържащ всички публични ключове на отдалечената машина (".ssh/authorized_keys" във вашата домашна директория), за да имате определени разрешения. Няма да работи, ако разрешенията за запис са зададени за други потребители, което е известно като „световно писано“. Тъй като името на директорията започва с точка (.), то няма да се показва в никакви ls списъци, освен ако не използвате команда

instagram viewer
ls -A.

Разрешенията може да се променят, ако файлът е копиран от друг компютър или сте го създали сами. За щастие това лесно се поправя.

Проверете вашите разрешения за публичен ключ

Файлът authorized_keys е просто файл с обикновен текст, който съдържа всички публични ключове от клиенти, които искате да можете да влезете в акаунта си на отдалечената машина. За да видите неговите разрешения, използвайте командата ls с опцията -l:

ls -l ~/.ssh/authorized_keys

Това ще покаже настройките за разрешение за собственика, групата и другите потребители. Обърнете внимание на последните шест букви в низа. Ако видите "w" в тях, това означава, че групата или други могат да пишат до нея, което я прави несигурна.

Вие ще искате този файл да може да се записва от вас, но не и от групата или други. За да предоставите достъп на правилните потребители, можете да промените разрешенията с chmod.

Има два начина: числено и символно.

Цифровият начин е по-кратък, но трябва да запомните осмичните номера на разрешенията:

chmod 700 ~/.ssh/authorized_keys

Символният метод е по-мнемоничен:

chmod go-w ~/.ssh/authorized_keys

Безопасно копиране на ключове с помощта на ssh-агент

Можете ръчно да копирате и поставите всички публични ключове от вашата машина в ~/.ssh/.authorized_keys файл, но използването на програмата ssh-agent ще намали шансовете за грешки в разрешенията.

За да стартирате ssh-agent, използвайте тази команда:

eval "$(ssh-agent-s)"

За да влезете в отдалечен сървър чрез ssh-agent, използвайте опцията -A с ssh

ssh -A [email protected]

Проверете sshd настройките на отдалечения сървър

Ако някое от тези усилия се провали, може да се наложи да направите някои промени в конфигурацията на sshd сървъра на отдалечената машина, ако имате root достъп. Ако не, най-вероятно ще трябва да се свържете със системния администратор, за да ви помогне да разрешите всички проблеми със SSH връзката. Това е последен метод, защото може да направи вашата система по-малко защитена.

Конфигурационният файл за цялата система за sshd е /etc/ssh/sshd_config. Тъй като е собственост на root, ще трябва да използвате sudo, за да го редактирате. Например, за да го редактирате с Vim:

sudo vim /etc/ssh/sshd_config

За да активирате sshd, за да ви позволи да влизате, дори ако вашият файл authorized_keys може да се записва от света, задайте опцията "StrictModes" на "no" в този файл.

Запазете го и рестартирайте SSH сървъра:

sudo systemctl restart sshd.service

Сега можете да поправите грешки в разрешенията за публичен ключ на SSH

Може да попаднете на грешки по отношение на SSH публичните ключове на отдалечени системи. За щастие през повечето време всичко, което трябва да направите, е да проверите и зададете разрешенията за файлове, така че никой друг да не може да види вашия ключ. Можете също да използвате ssh-agent за по-надеждни връзки. В краен случай можете да направите SSH сървъра по-малко строг.