Protokół SSH

Ta strona jest poświęcona protokołowi SSH. Informacje o firmie, która stoi za tym protokołem, zobacz Bezpieczeństwo komunikacji SSH. Informacje na temat używania komendy ssh w systemie Linux, zobacz Używanie komendy ssh. Klienci SSH, serwery i informacje techniczne – zobacz stronę domową SSH (Secure Shell).

Protokół SSH (określany również jako Secure Shell) jest metodą bezpiecznego zdalnego logowania z jednego komputera na drugi. Zapewnia kilka alternatywnych opcji silnego uwierzytelniania, a także chroni bezpieczeństwo i integralność komunikacji za pomocą silnego szyfrowania. Jest to bezpieczna alternatywa dla niezabezpieczonych protokołów logowania (takich jak telnet, rlogin) i niezabezpieczonych metod transferu plików (takich jak FTP).

Typowe zastosowania protokołu SSH

Protokół ten jest używany w sieciach korporacyjnych do:

  • zapewnienia bezpiecznego dostępu dla użytkowników i zautomatyzowanych procesów

  • interaktywnego i zautomatyzowanego przesyłania plików

  • wydawania zdalnych poleceń

  • zarządzania infrastrukturą sieciową i innymi komponentami systemu o znaczeniu krytycznym.

Jak działa protokół SSH

Protokół działa w modelu klient-serwer, co oznacza, że połączenie jest nawiązywane przez klienta SSH łączącego się z serwerem SSH. Klient SSH przeprowadza proces zestawiania połączenia i wykorzystuje kryptografię klucza publicznego do weryfikacji tożsamości serwera SSH. Po zakończeniu fazy konfiguracji protokół SSH wykorzystuje silne szyfrowanie symetryczne i algorytmy haszujące, aby zapewnić prywatność i integralność danych wymienianych między klientem a serwerem.

Niniejszy rysunek przedstawia uproszczoną konfigurację bezpiecznego połączenia shellowego.

Silne uwierzytelnianie za pomocą kluczy SSH

Do uwierzytelniania użytkownika można wykorzystać kilka opcji. Najpopularniejsze z nich to hasła i uwierzytelnianie kluczem publicznym.

Metoda uwierzytelniania kluczem publicznym jest wykorzystywana przede wszystkim do automatyzacji, a czasem przez administratorów systemów do jednokrotnego logowania. Okazało się, że jest ona znacznie szerzej wykorzystywana niż się spodziewaliśmy. Idea polega na posiadaniu pary kluczy kryptograficznych – klucza publicznego i prywatnego – i skonfigurowaniu klucza publicznego na serwerze w celu autoryzacji dostępu i przyznania dostępu do serwera każdemu, kto posiada kopię klucza prywatnego. Klucze używane do uwierzytelniania nazywane są kluczami SSH. Uwierzytelnianie za pomocą klucza publicznego jest również stosowane z kartami inteligentnymi, takimi jak karty CAC i PIV używane przez rząd USA.

Głównym zastosowaniem uwierzytelniania opartego na kluczach jest umożliwienie bezpiecznej automatyzacji. Zautomatyzowane bezpieczne przesyłanie plików w powłoce jest wykorzystywane do płynnej integracji aplikacji, a także do zautomatyzowanego zarządzania konfiguracją systemów &.

Zauważyliśmy, że duże organizacje mają znacznie więcej kluczy SSH niż sobie wyobrażają, a zarządzanie kluczami SSH stało się bardzo ważne. Klucze SSH przyznają dostęp tak jak nazwy użytkowników i hasła. W niektórych przypadkach znaleźliśmy kilka milionów kluczy SSH uprawniających do dostępu do serwerów produkcyjnych w środowiskach klientów, przy czym 90% kluczy było nieużywanych i reprezentowało dostęp, który został przyznany, ale nigdy nie został zakończony. Zapewnienie odpowiednich polityk, procesów i audytów również w zakresie wykorzystania SSH jest kluczowe dla prawidłowego zarządzania tożsamością i dostępem. Tradycyjne projekty zarządzania tożsamością pomijały aż 90% wszystkich danych uwierzytelniających poprzez ignorowanie kluczy SSH. Dostarczamy usługi i narzędzia do wdrożenia zarządzania kluczami SSH.

SSH zapewnia silne szyfrowanie i ochronę integralności

Po nawiązaniu połączenia między klientem i serwerem SSH, przesyłane dane są szyfrowane zgodnie z parametrami wynegocjowanymi podczas konfiguracji. Podczas negocjacji klient i serwer uzgadniają, jaki symetryczny algorytm szyfrowania ma zostać użyty oraz generują klucz szyfrujący, który zostanie użyty. Ruch pomiędzy komunikującymi się stronami jest chroniony za pomocą standardowych algorytmów silnego szyfrowania (takich jak AES (Advanced Encryption Standard)), a protokół SSH zawiera również mechanizm zapewniający integralność przesyłanych danych za pomocą standardowych algorytmów haszujących (takich jak SHA-2 (Standard Hashing Algorithm)).

Standard IETF SSH i szczegółowa dokumentacja techniczna

Rdzeń protokołu

Kiedy protokół SSH stał się popularny, Tatu Ylonen zgłosił go do IETF w celu standaryzacji. Obecnie jest on standardem internetowym opisanym w następujących dokumentach:

RFC 4251 – The Secure Shell (SSH) Protocol ArchitectureRFC 4253 – The Secure Shell (SSH) Transport Layer ProtocolRFC 4252 – The Secure Shell (SSH) Authentication ProtocolRFC 4254 – The Secure Shell (SSH) Connection Protocol

SFTP file transfer protocol

SFTP (SSH File Transfer Protocol) jest prawdopodobnie najczęściej używanym obecnie protokołem bezpiecznego transferu plików. Działa on poprzez SSH, i jest obecnie udokumentowany w draft-ietf-secsh-filexfer-02

Format pliku klucza publicznego

Format pliku klucza publicznego nie jest formalnym standardem (jest to dokument informacyjny), ale wiele implementacji wspiera ten format.RFC 4716 – The Secure Shell (SSH) Public Key File Format

Jak cytować SSH

Aby zacytować SSH w pracy naukowej, użyj następującego wzoru:

Tatu Ylonen: SSH - Secure Login Connections over the Internet.Proceedings of the 6th USENIX Security Symposium, pp. 37-42,USENIX, 1996.