Contents

Jak naprawić błąd "Odmowa uprawnień (klucz publiczny)" SSH w systemie Linux?

SSH to przydatne narzędzie do łączenia się ze zdalnymi maszynami, ale możesz napotkać błąd “Odmowa uprawnień (klucz publiczny)” związany z kluczem publicznym w systemie Linux. Na szczęście istnieje kilka prostych poprawek, które można wypróbować, aby rozwiązać ten problem.

Co to jest klucz publiczny?

Generowanie pary kluczy dla SSH w systemie Linux obejmuje tworzenie zarówno klucza publicznego, jak i odpowiadającego mu prywatnego odpowiednika. Klucz prywatny jest starannie chroniony przez użytkownika, podczas gdy klucz publiczny jest przesyłany do zdalnych serwerów w celu ułatwienia bezpiecznego logowania bez konieczności podawania hasła. Podczas próby nawiązania połączenia klient SSH w systemie lokalnym weryfikuje autentyczność klucza publicznego względem klucza prywatnego posiadanego przez użytkownika.

Kluczową zaletą tego podejścia jest fakt, że wystarczy ujawnienie klucza publicznego. Tak długo, jak ktoś zachowuje poufność swojego klucza prywatnego, pozostaje chroniony, nawet jeśli jego klucz publiczny zostanie poznany, ponieważ ten drugi okazałby się bezowocny bez pierwszego.

Aby OpenSSH, powszechne rozwiązanie klienckie i serwerowe typu open source, działało poprawnie, należy przyznać określone uprawnienia do określonego pliku znajdującego się w katalogu domowym użytkownika (.ssh/authorized\_keys). W szczególności plik ten nie powinien mieć skonfigurowanych uprawnień do zapisu dla użytkowników spoza właściciela, określanych jako “world-writable”, w przeciwnym razie system nie będzie działał poprawnie. W szczególności, ze względu na wiodącą kropkę obecną przed nazwą katalogu, plik ten nie pojawi się na standardowych listach plików przy użyciu zwykłych poleceń, takich jak “ls”, co wymaga użycia bardziej wszechstronnego polecenia “ls -A”, po którym następuje “.

Modyfikacja uprawnień może wystąpić, gdy plik jest przenoszony z jednego urządzenia na drugie lub tworzony w bieżącym systemie. Jednak dostosowanie tych ustawień jest łatwe i można to zrobić szybko.

Sprawdź uprawnienia klucza publicznego

Plik authorized\_keys to plik tekstowy zawierający klucze publiczne klientów, którym chcemy zezwolić na dostęp do ich konta w systemie zdalnym. Aby wyświetlić jego uprawnienia, wystarczy użyć polecenia “ls” wraz z opcją “-l”.

 ls -l ~/.ssh/authorized_keys

/pl/images/ssh-id_rsa-pub-ls-output.jpg

Niniejsza konfiguracja przedstawia parametry autoryzacji mające zastosowanie do właściciela, zespołu i dodatkowych użytkowników. Konieczne jest sprawdzenie ostatnich sześciu znaków znacznika. Obecność litery “w” oznacza, że zbiorowość lub nieokreślone osoby są upoważnione do wpisywania na nim, co czyni układ podatnym na zagrożenia bezpieczeństwa.

Aby przyznać sobie uprawnienia do zapisu do określonego pliku, jednocześnie ograniczając dostęp dla innych użytkowników zarówno w tej samej grupie, jak i poza nią, możesz użyć polecenia “chmod” w terminalu. Pozwoli to odpowiednio zmodyfikować uprawnienia pliku, zapewniając, że tylko autoryzowane osoby mają dostęp do pliku.

Istnieją dwa sposoby: numerycznie i symbolicznie.

Alternatywne podejście polega na wykorzystaniu wartości liczbowych do reprezentowania uprawnień do plików, co wymaga zapamiętania numeracji ósemkowej dla określonych uprawnień.

 chmod 700 ~/.ssh/authorized_keys

Metoda symboliczna jest bardziej mnemoniczna:

 chmod go-w ~/.ssh/authorized_keys 

Bezpieczne kopiowanie kluczy za pomocą ssh-agent

/pl/images/ssh-agent.jpg

Korzystanie z programu ssh-agent jest wysoce zalecane do zabezpieczania poufnych informacji, takich jak klucze prywatne używane do uwierzytelniania SSH. Metoda ta eliminuje potrzebę ręcznego wprowadzania poleceń wiersza poleceń lub martwienia się o potencjalne problemy z uprawnieniami, które mogą pojawić się podczas kopiowania i wklejania bezpośrednio do autoryzowanych plików kluczy.

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

 eval "$(ssh-agent-s)"

Aby uzyskać dostęp do odległego serwera za pomocą agenta SSH za pośrednictwem interfejsu wiersza poleceń, należy użyć opcji “-A” wraz z poleceniem “ssh”.

 ssh -A [email protected] 

Sprawdź ustawienia sshd zdalnego serwera

/pl/images/sshd-config-file.jpg

W przypadku, gdy nasze poprzednie zalecenia nie rozwiążą problemu, jednym z potencjalnych sposobów działania jest dostosowanie ustawień serwera sshd na zdalnym urządzeniu, pod warunkiem, że posiadasz uprawnienia administracyjne. Należy to jednak traktować jako środek ostateczny, ponieważ wprowadzanie takich modyfikacji może potencjalnie zagrozić bezpieczeństwu systemu. W przypadkach, w których nie można bezpośrednio zmodyfikować konfiguracji, należy zwrócić się o pomoc do wyznaczonego administratora systemu w celu rozwiązania wszelkich utrzymujących się problemów związanych z nawiązaniem połączenia SSH.

Plik zawierający globalne ustawienia demona SSH (sshd) znajduje się pod adresem “/etc/ssh/sshd\_config”. Jest on własnością użytkownika root i wymaga uprawnień administracyjnych, aby uzyskać do niego dostęp lub go zmodyfikować. Aby dokonać edycji za pomocą edytora tekstu Vim, można wykonać polecenie “sudo vim /etc/ssh/sshd\_config”, a następnie nacisnąć klawisz Enter.

 sudo vim /etc/ssh/sshd_config 

Aby sshd zezwalał na logowanie pomimo publicznie dostępnego pliku authorized\_keys, konieczne jest skonfigurowanie pliku konfiguracyjnego serwera poprzez ustawienie parametru “StrictModes” na “no”.

Zapisz i uruchom ponownie serwer SSH:

 sudo systemctl restart sshd.service

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

W przypadkach, gdy pojawiają się problemy związane z kluczami publicznymi SSH w systemach zewnętrznych, często wystarczy zweryfikować i dostosować uprawnienia do pliku, aby zapewnić wyłączność klucza. Dodatkowo, wykorzystanie agenta ssh może zapewnić zwiększone bezpieczeństwo podczas procesów połączenia. Jednak w razie potrzeby można rozważyć złagodzenie sztywności serwera SSH jako ostateczne rozwiązanie.