Czy Twoje publiczne klucze SSH sprawiają Ci trudności? Wypróbuj jedno z tych rozwiązań.

SSH to przydatne narzędzie do łączenia się ze zdalnymi maszynami, ale może wystąpić błąd „Odmowa uprawnień (klucz publiczny)” dotyczący klucza publicznego w systemie Linux. Na szczęście istnieje kilka prostych rozwiązań, dzięki którym możesz spróbować rozwiązać ten problem.

Co to jest klucz publiczny?

Kiedy wygenerujesz parę kluczy dla SSH w systemie Linux, otrzymasz klucz publiczny i klucz prywatny. Klucz prywatny pozostanie przy Tobie jako ściśle strzeżona tajemnica, ale klucz publiczny zostanie przesłany do zdalnych serwerów, abyś mógł zalogować się bez hasła. Twój lokalny klient SSH dopasuje klucz publiczny do klucza prywatnego po nawiązaniu połączenia.

Zaletą tej metody jest to, że wystarczy podać klucz publiczny. Tak długo, jak chronisz swój klucz prywatny, powinno to zapewnić bezpieczeństwo na wypadek naruszenia bezpieczeństwa Twojego klucza publicznego. Klucz publiczny sam w sobie będzie bezużyteczny.

OpenSSH, najpopularniejszy klient i serwer SSH w świecie open source, wymaga pliku zawierającego dowolne klucze publiczne na zdalnym komputerze („.ssh/authorized_keys” w twoim katalogu domowym), aby mieć określone uprawnienia. Nie zadziała, jeśli uprawnienia do zapisu zostaną ustawione dla innych użytkowników, co jest określane jako „możliwość zapisu na całym świecie”. Ponieważ nazwa katalogu zaczyna się od kropki (.), nie pojawi się ona na żadnym liście ls, chyba że użyjesz kropki Komenda ls-A.

Uprawnienia mogą ulec zmianie, jeśli plik został skopiowany z innego komputera lub utworzyłeś go samodzielnie. Na szczęście można to łatwo naprawić.

Sprawdź uprawnienia klucza publicznego

Plik autoryzowanych_kluczy to po prostu zwykły plik tekstowy zawierający wszystkie klucze publiczne klientów, którym chcesz umożliwić logowanie się na swoje konto na zdalnym komputerze. Aby zobaczyć jego uprawnienia, użyj polecenia ls z opcją -l:

ls -l ~/.ssh/authorized_keys

Spowoduje to wyświetlenie ustawień uprawnień właściciela, grupy i innych użytkowników. Zwróć uwagę na sześć ostatnich liter w ciągu. Jeśli widzisz w nich „w”, oznacza to, że grupa lub inne osoby mogą do niej pisać, co powoduje, że jest ona niebezpieczna.

Będziesz chciał, aby ten plik mógł być zapisywany przez Ciebie, ale nie przez grupę lub inne osoby. Aby zapewnić dostęp właściwym użytkownikom, możesz zmienić uprawnienia za pomocą chmod.

Są dwa sposoby: numeryczny i symboliczny.

Sposób numeryczny jest krótszy, ale trzeba zapamiętać ósemkowe numery uprawnień:

chmod 700 ~/.ssh/authorized_keys

Metoda symboliczna jest bardziej mnemoniczna:

chmod go-w ~/.ssh/authorized_keys

Bezpiecznie kopiuj klucze za pomocą ssh-agent

Możesz ręcznie skopiować i wkleić dowolne klucze publiczne ze swojego komputera do pliku ~/.ssh/.authorized_keys plik, ale użycie programu ssh-agent zmniejszy ryzyko wystąpienia błędów uprawnień.

Aby uruchomić ssh-agent, użyj tego polecenia:

eval "$(ssh-agent-s)"

Aby zalogować się na zdalny serwer za pomocą ssh-agent, użyj opcji -A z ssh

ssh -A [email protected]

Sprawdź ustawienia sshd serwera zdalnego

Jeśli którykolwiek z tych wysiłków zakończy się niepowodzeniem, być może będziesz musiał wprowadzić pewne zmiany konfiguracyjne na serwerze sshd na zdalnym komputerze, jeśli masz dostęp do konta root. Jeśli nie, prawdopodobnie będziesz musiał skontaktować się z administratorem systemu, aby pomógł Ci rozwiązać problemy z połączeniem SSH. Jest to metoda ostateczna, ponieważ może zmniejszyć bezpieczeństwo systemu.

Ogólnosystemowy plik konfiguracyjny sshd to /etc/ssh/sshd_config. Ponieważ jego właścicielem jest root, do jego edycji będziesz musiał użyć sudo. Na przykład, aby edytować go za pomocą Vima:

sudo vim /etc/ssh/sshd_config

Aby włączyć sshd, aby umożliwić Ci logowanie, nawet jeśli Twój plik autoryzowanych kluczy może być zapisywany na całym świecie, ustaw opcję „StrictModes” na „nie” w tym pliku.

Zapisz go i zrestartuj serwer SSH:

sudo systemctl restart sshd.service

Teraz możesz naprawić błędy uprawnień klucza publicznego SSH

Możesz napotkać błędy dotyczące kluczy publicznych SSH w systemach zdalnych. Na szczęście w większości przypadków wystarczy sprawdzić i ustawić uprawnienia do pliku, aby nikt inny nie mógł zobaczyć Twojego klucza. Możesz także użyć ssh-agent, aby uzyskać bardziej niezawodne połączenia. W ostateczności możesz zmniejszyć rygorystyczne wymagania serwera SSH.