Logowanie SSH – gdzie znaleźć klucze RSA do połączenia?

Połączenie za pomocą kluczy SSH wymaga wygenerowania pary kluczy (publicznego i prywatnego), na podstawie których nastąpi autoryzacja do serwera. Klucz publiczny umieszcza się na serwerze, do którego ma nastąpić połączenie, a klucz prywatny na komputerze, z którego łączy się użytkownik.

Połączenie z użyciem kluczy SSH stosowane jest m.in. podczas zarządzania repozytoriami SVN przez SSH przy hostingach, które nie posiadają unikalnego adresu IP. Sugerujemy, aby klucze SSH generować dla każdego serwera i dla każdego komputera osobno. Klucze należy generować bezpośrednio z poziomu komputera, a nie serwera Unix.

Pamiętaj, aby nie udostępniać klucza prywatnego podmiotom i osobom trzecim.

Generowanie kluczy SSH w systemie Windows możliwe jest m.in. za pomocą:

Dodatkowe informacje w języku angielskim dot. generowania kluczy przez SSH znajdziesz pod adresem: https://www.ssh.com/ssh/keygen/

Generowanie kluczy w konsoli na przykładzie Cmder’a

Cmder to środowisko konsolowe imitujące konsolę Linuxową. Można je rozszerzyć o dodatkowe elementy, aby jego działanie było zbliżone do działania, np. konsoli Linuxa lub konsoli działającej pod serwerem Unix.

  1. Z poziomu katalogu C:\Users\nazwa_uzytkownika wywołaj polecenie:
     ssh-keygen -t rsa -b 4096 -f .ssh/s_home -C "serwer123456"
    • ssh-keygen – to nasz generator kluczy,
    • -t rsa  – wybór szyfrowania (zalecane RSA),
    • -b 4096 – moc szyfrowania (może być 2048, ale zalecane 4096),
    • -f .ssh/s_home – nazwa, pod którą maja być pliki (jeśli korzystasz z kluczy SSH do wielu serwerów, warto używać tego przełącznika, aby uniknąć nadpisania kluczy z domyślną nazwą,
    • -C “serwer123456” – dowolny komentarz, który będzie widoczny w kluczach na serwerze (wpisanie w tym miejscu nazwy Twojego serwera może pomóc później przy identyfikacji/szukaniu kluczy).
  2. Na ekranie wyświetlone zostaną kolejno następujące komunikaty, klikaj przycisk Enter, aby przejść dalej.
    • Generating public/private rsa key pair – wciśnij Enter.
    • Enter passphrase (empty for no passphrase) – wciśnij Enter.
    • Enter same passphrase again – kliknij Enter
  3. Po wyświetleniu kolejnych komunikatów, wyświetlone zostanie podsumowanie informujące o wygenerowaniu kluczy.
    Your identification has been saved in .ssh/s_home. Your public key has been saved in .ssh/s_home.pub. The key fingerprint is:
    SHA256:N3Le5LR5R1WRrMdgkrPWJ8gE+b7jn2nyY3vYof4Frwk serwer123456
    The key's randomart image is:
    +---[RSA 4096]----+
    |         .o . ..+|
    |         . = o o.|
    |          + B + .|
    |           * + +.|
    |        S * o = .|
    |         = B o = |
    |          . E = =|
    |           + Oo*.|
    |          ..OBB. |
    +----[SHA256]-----+
    Jako alternatywne rozwiązanie do wygenerowania kluczy, możesz skorzystać z programu puttygen. Następnie po wygenerowaniu kluczy w puttygen, będziesz mógł skonfigurować aplikację putty w taki sposób, aby stosowała ona wskazany klucz podczas połączenia. Podczas generowania kluczy w puttygen należy zaznaczyć RSA, wpisać 4096, wygenerować i zapisać klucze. Potem w konfiguracji aplikacji putty wystarczy wskazać klucz prywatny, a klucz publiczny trzeba wgrać na serwer zgodnie z dalszymi punktami poniższej instrukcji.

    Więcej informacji w języku angielskim nt. generowania kluczy znajdziesz: tutaj lub tutaj.

  4. W katalogu .ssh (w systemie Windows: C\Users\nazwa_uzytkownika\.ssh) zostaną zapisane dwa pliki:
    • s_home
    • s_home.pub
    Klucz publiczny umieszcza się na serwerze, do którego ma nastąpić połączenie, a klucz prywatny na komputerze, z którego łączy się użytkownik.
    Jeśli korzystasz z systemu Windows, podczas inicjowania połączenia z użyciem kluczy SSH, może być wymagane, aby klucz prywatny był w formacie .ppk
  5. Plik z końcówką .pub należy przesłać na serwer, drugi plik jest kluczem prywatnym i nie należy go udostępniać nigdzie indziej. Klucz prywatny ma pozostać na komputerze lokalnym, z którego będziesz inicjować połączenie z serwerem. Poniżej znajdziesz przykład zawartości dla pliku klucza publicznego:
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDfND/F0NWBSJf21/8H9qYjifWOqdIuK+CjUyuMAFFyPLePpuKELUH9NGnPk45moNnvnq/MvuHp/6S97wmNIhtdo0m5CHSNuhkRe31Y8k6qmVz65BPfCMA9wJZtef0UPJxurJm9cGEFVpzyOyc39NCO0JNnx8Uk727CqL+8tYN4e74hmib/4Aq+G8R52AiEOjKlkVqx0hddkGsFryIWEIWgzZWSbKez3zbGnH7i29R5Minzink963ndFr5cQ0sQQSp2hDhaBkIO9Xn9EiAlZr7P+HyTXUDgXG6a0SmbRptNPlQMI9QNn3wLn4418N/t6uwkLul+Fjf5GOWs8FLre5Hb7DPK4DxXWMiIMuzYc0A13D1ia9bWTu1Uh7JaqGDIAc27Pt+wNQhAAEAdbc2ZKnYCvowfL1xdFCK81a72YOUp6W6Ydmt1uAA9kAp9llD7c4SCumYs9kkeC3lnou+ALkaB1zSGjR+XBo8PzLOzg6gOJTZUpcp703fmvg+nLem9R1ga9gzEZt+ajtua0+ZTOg70SVKs0i7Lz6ApzjFNi/9wnDpB4VaDPGtTm3yjHddN4PhIZak5VfwMKWzXpEw4IunRfqCy7ObHL/qkTtHwlVUZ9MzDtUOkACbV94jEmeFImUgwfTpN3J4yu9O3ESq+bgN5Ym4E1R0NWN2uP5dNR+6HQw== serwer123456
    
  6. Wgraj klucz publiczny na serwer. Możesz to wykonać poniższym poleceniem lub za pomocą tradycyjnego połączenia SSH/FTP. Jeśli poniższe polecenie nie zadziała (np. w Cmder), to przejdź do punktu 7, gdzie opisujemy wgrywanie klucza publicznego przez SSH/FTP.
    ssh-copy-id -i .ssh/s_home serwer123456@serwer123456.home.pl
    • -i .ssh/s_home – w tym miejscu wskazujesz klucz do wgrania na serwer
    • serwer123456@serwer123456.home.pl – w tym miejscu wskazujesz serwer (w formacie: nazwa_użytkownika@adres_serwera), na który ma zostać wgrany klucz
  7. Aby wysłać klucz publiczny na serwer, możesz też skorzystać z tradycyjnego połączenia SSH/FTP, gdzie po połączeniu z serwerem należy utworzyć na serwerze katalog .ssh (w tej samej lokalizacji co katalog systemowy /backup), a następnie należy utworzyć plik do przechowywania kluczy o nazwie: authorized_keys. Utworzenie katalogu i pliku możesz wykonać za pomocą poniższych dwóch poleceń:
    Polecenie 1 – powoduje utworzenie katalogu .ssh w obecnej lokalizacji:
    mkdir .ssh

    Polecenie 2 – tworzy plik o nazwie authorized_keys, który będzie znajdować się w katalogu .ssh:

    touch .ssh/authorized_keys
  8. Następnie za pomocą dowolnego edytora (np. VIM na serwerze lub Notepad++ na komputerze lokalnym) wklej (przenieś) klucz publiczny z pliku s_home.pub do utworzonego na serwerze pliku o nazwie: authorized_keys. Gdy to zrobisz, możesz zakończyć połączenie SSH z serwerem.
  9. Następnie w katalogu .ssh na komputerze, w którym znajdują się klucze, należy utworzyć plik config i w nim zapisać konfigurację połączenia wg. poniższego schematu (zamiast “serwer123456” wpisz identyfikator swojego serwera):
    Host home serwer123456.home.pl
      HostName serwer123456.home.pl
      IdentityFile ./.ssh/s_home
      User serwer123456
    
    • w pierwszej linii fraza “home” może być zamieniona na inną dowolną frazę. Może Ci się ona przydać do połączenia z serwerem za pomocą tej prostej nazwy.
    • Host home serwer123456.home.pl – twoja prosta nazwa i adres serwera
    • HostName serwer123456.home.pl – adres serwera
    • IdentityFile ./.ssh/s_home – lokalizacja klucza prywatnego
    • User serwer123456 – użytkownik ssh
  10. Po utworzeniu pliku config, z poziomu katalogu C:\Users\nazwa_użytkownika możesz wywołać poniższe polecenie, aby połączyć się z serwerem.
    ssh home
    • w pliku config możesz ustalić inną prostą nazwę niż “home”, którą możesz używać do inicjowania połączenia ze swoim serwerem.

Konwersja klucza prywatnego do formatu .ppk (Windows)

Jeśli posiadasz już klucz prywatny, który wygenerowałeś w systemie Linux i chcesz go użyć w systemie Windows, wymagane jest wykonanie konwersji klucza prywatnego do formatu .ppk (zgodnego z systemem Windows). Umożliwia to aplikacja PuTTyGen.

  1. Jeśli posiadasz plik klucza prywatnego na swoim komputerze, uruchom aplikację PuTTyGen i przejdź do opcji menu: Conversions -> Import key
  2. Wybierz plik klucza prywatnego. W polu: Key passphrase możesz wpisać hasło do zabezpieczenia.
  3. Kliknij przycisk: Save private key i zapisz klucz prywatny w postaci pliku w formacie .ppk

Generowanie kluczy SSH przy użyciu PuTTyGen

Po wygenerowaniu kluczy SSH przy użyciu PuTTyGeb, klucz prywatny jest wówczas zapisywany w rejestrach Windowsa w lokalizacji, z której domyślnie korzysta aplikacja PuTTy (nie trzeba jej ręcznie ustawiać).

Dodatkowym atutem jest fakt, że z tej samej lokalizacji klucza prywatnego może korzystać też TortoiseSVN, czyli popularny klient SVN. Zatem jeśli z poziomu PuTTy dodamy dla danego hosta klucz prywatny, to program TortoiseSVN również będzie z niego korzystać.

Dodatkowe informacje w języku angielskim dot. generowania kluczy SSH przy użyciu PuTTyGen znajdziesz pod adresem: https://www.ssh.com/ssh/putty/windows/puttygen

 Jak wygenerować klucze SSH przy użyciu PuTTyGen?

  1. Pobierz aplikację PuTTyGen.
  2. Po uruchomieniu aplikacji PuTTyGen:
    • kliknij przycisk: Generate i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.
    • po wygenerowaniu kluczy, kliknij przycisk: Save private key, aby zapisać klucz prywatny.
    • klucz publiczny zostanie wyświetlony w oknie aplikacji (zaznaczone cyfrą 3 na poniższym obrazku). Klucz publiczny należy wysłać serwer. W tym celu połącz się z serwerem FTP i utwórz katalog o nazwie: .ssh (w tej samej lokalizacji co katalog systemowy /backup), a następnie utwórz plik do przechowywania kluczy o nazwie: authorized_keys
      Następnie za pomocą dowolnego edytora tekstowego wklej wygenerowany klucz publiczny do utworzonego na serwerze pliku o nazwie: authorized_keys

  3. Po wysłaniu klucza publicznego na serwer, wówczas w aplikacji PuTTy w ustawieniach autoryzacji możesz podać lokalizację klucza prywatnego, którego użycie spowoduje, że łączenie z SSH będzie odbywało się bez ręcznego wpisywania hasła:
  • Czy artykuł był pomocny?
  • TAK   Nie
Tematy powiązane
Więcej informacji na forum dyskusyjnym:   Kliknij tutaj, aby przejść na forum.home.pl