Strona główna » Blog » Konfiguracja logowania kluczami SSH w CentOS 7

Konfiguracja logowania kluczami SSH w CentOS 7

Czysta i minimalna instalacja CentOSa, na którą można trafić u niektórych VPS-odawców, jest trochę mniej intuicyjna w konfiguracji niż typowe instalacje, które spotykałem do tej pory i sprawiła mi kłopot przy konfiguracji kluczy SSH. Opisuję problem i rozwiązanie.

Cel, który chciałem osiągnąć, to:

  • Wyłączenie możliwości uwierzytelniania za pomocą hasła;
  • Włączenie możliwości uwierzytelniania kluczem publicznym.

Zacząłem od tego, że zalogowałem się jako root na czystą nową maszynę wirtualną z CentOS 7 oraz doinstalowałem i skonfigurowałem Webmin’a, aby wygodnie konfigurować i restartować serwer SSH, tworzyć użytkowników itp. Najpierw utworzyłem swojego osobistego użytkownika i dodałem go do grupy “wheel”, aby miał dostęp do “sudo”. W konfiguracji SSH wyłączyłem możliwość logowania na “roota”. Zapisałem zmiany. Zalogowałem się na moje osobiste konto, utworzyłem folder “.ssh” a w nim plik “authorized_keys” (o tym co w nim umieściłem zaraz napiszę). Folder powinien mieć uprawnienia 700 a plik 600, serwer SSH podobno je sprawdza. W Webminie za pomoca File Managera ustawiłem też kontekst dla folderu “.ssh” oraz rekursywnie dla jego zawartości na “unconfined_u:object_r:user_home_t:s0” – bez tego SELinux nie chciał udzielić dostępu usłudze SSH o czym informował w “audit.log”.

Klucz publiczny i prywatny mógłbym wygenerować z poziomu poleceń Linuxa, ale akurat tak się złożyło, że wcześniej pracowałem na Windowsie i wygodniej było mi użyć jednego z narzędzi z pakietu PutTTY, które nazywa się PuTTYgen. Generuje ono klucz publiczny i prywatny a dosłowna treść, którą trzeba wpisać do linuksowego “authorized_keys” wyświetlana jest zaraz po wygenerowaniu w odpowiednim okienku. UWAGA, użycie przycisku “Save public key” zapisuje ten klucz w nieco innym tekstowym formacie, więc polecam ręcznie utworzyć sobie plik tekstowy z linuksową wersją.

Na koniec z użyciem Webmina zmieniłem konfigurację SSH, aby wyłączyć możliwość logowania hasłem. Z poziomu Windowsa dodałem klucz do Pageant’a – innego narzędzia spośród pakietu PuTTY – i wyklikałem połączenie z serwerem VPS.

Jeszcze taka mała uwaga na koniec: w /var/log/secure może pojawiać się wpis o błędzie konfiguracyjnym SSH spowodowanym użyciem dyrektywy “RSAAuthentication”. Dyrektywa jest stara i już nieobsługiwana, można ją ręcznie usunąć z konfiguracji SSH (w Webminie można znaleźć możliwość ręcznej edycji pliku konfiguracyjnego).