Затрудняват ли ви публичните SSH ключове? Опитайте едно от тези решения.
SSH е полезен инструмент за свързване с отдалечени машини, но може да попаднете на грешка „Разрешението е отказано (publickey)“, включващо вашия публичен ключ в Linux. За щастие има някои лесни корекции, които можете да опитате, за да го отстраните.
Какво е публичен ключ?
Когато генерирате двойка ключове за SSH на Linux, ще ви бъдат дадени публичен ключ и частен ключ. Частният ключ ще остане при вас като строго пазена тайна, но публичният ключ е това, което ще бъде предадено на отдалечени сървъри, за да ви позволи да влезете без парола. Вашият локален SSH клиент ще съпостави публичния ключ с частния ключ, когато се свържете.
Предимството на този метод е, че трябва да дадете само публичния ключ. Докато пазите личния си ключ личен, това трябва да ви предпази в случай, че публичният ви ключ бъде компрометиран. Публичният ключ ще бъде безполезен сам по себе си.
OpenSSH, най-широко използваният SSH клиент и сървър в света с отворен код, изисква файлът, съдържащ всички публични ключове на отдалечената машина (".ssh/authorized_keys" във вашата домашна директория), за да имате определени разрешения. Няма да работи, ако разрешенията за запис са зададени за други потребители, което е известно като „световно писано“. Тъй като името на директорията започва с точка (.), то няма да се показва в никакви ls списъци, освен ако не използвате команда
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 сървъра по-малко строг.