lk.mimuw.edu.pl
  • Laboratorium
    Regulamin Sale i sprzęt Ekrany w holu
  • Studenci
  • Pracownicy
  • Wi-Fi
  • Drukowanie
    Dla pracowników Dla studentów
  • Zamówienia publiczne
  • Praca zdalna
  • Helpdesk Instytutów
  • Szukaj
  • Kontakt
  • Poczta
    Poczta pracownicza Poczta studencka
  • PL EN
    Polski
Wideokonferencje Jitsi (wykłady, seminaria, etc.) Google Hangouts (wykłady, seminaria, etc.) Uniwersytecki Gitlab Dostęp do czasopism naukowych (proxy) Środowisko graficzne na serwerach i komputerach MIM SSH Zoom Fiori ERR

Protokół SSH umożliwia uzyskanie sesji tekstowej lub graficznej na dowolnym komputerze z zainstalowanym serwerem SSH. Na naszym Wydziale można zdalnie korzystać z serwerów duch oraz students, a także z komputerów w Laboratorium Komputerowym (pod systemem Linux).

Logowanie przy użyciu hasła

Jest to najprostsza metoda logowania, zachęcamy jednak do niewiele bardziej skomplikowanej, a dużo bezpieczniejszej metody kluczy SSH; do uwierzytelnienia pierwszym sposobem wymagana jest znajomość swojego hasła centralnego oraz nazwy serwera lub komputera, na który chcemy się zalogować. Na komputerze użytkownika powinien być zainstalowany program kliencki SSH, np. openssh-client pod Linuksem, Windows od wersji Windows 10 (kompilacja 1809) posiada wbudowanego klienta SSH, a w przypadku starszej wersji Windowsa 10 bądź starszej wersji Windowsa można posłużyć się dowolnym graficznym klientem SSH np. putty.

Zalogować się możemy korzystając z terminala dołączonego domyślnie do naszego środowiska graficznego (w przypadku Linuksa) bądź korzystając z Windows Terminala który jest integralną częścią Windows 11 (można go również zainstalować na starszych wersjach Windowsa).

Przykładowe logowanie w systemie Linux i Windows wygląda następująco:


# ssh login@duch.mimuw.edu.pl
The authenticity of host 'duch.mimuw.edu.pl (10.0.0.3)' can't be established.
ECDSA key fingerprint is SHA256:aGmqrq9HinndODxFNTFoum5/orDBuCCwpSAnTYJN3W4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'duch.mimuw.edu.pl' (ECDSA) to the list of known hosts.

Należy zaakceptować klucz publiczny serwera (standardowa procedura) oraz podać hasło.

Logowanie za pomocą kluczy SSH

Ta metoda wykorzystuje parę kluczy SSH, jeden publiczny, który, jak wskazuje nazwa może zostać udostępniony otoczeniu, np. w Internecie w serwisie Github lub podobnym, oraz prywatny, który musimy za wszelką cenę chronić i nie udostępniać nigdy, nikomu. Obydwa klucze połączone są kryptograficznie i będą działać wyłącznie w parze; nie jest możliwe (tzn. nie jest obecnie możliwe przy użyciu obecnych technologii bądź nieopłacalne poprzez zbyt duży nakładów środków) uzyskanie w rozsądnym czasie klucza prywatnego, posiadając jedynie klucz publiczny.

Klucz SSH jest wielokrotnie bardziej skomplikowany niż długie, nawet wyśmienite hasło. Dodatkowo, hasło klucza nigdy nie opuszcza komputera użytkownika, w przeciwieństwie do standardowego hasła logowania.
Pierwsze logowanie na komputerach w Laboratorium zawsze będzie wymagało podania hasła centralnego (dopiero kolejne logowania odbędą się przy pomocy klucza SSH). Wiąże się to z faktem, iż katalog domowy użytkownika jest montowany za pomocą NFS, z głównego serwera studenckiego z wykorzystaniem Kerberosa (silnego mechanizmu zabezpieczeń). Podczas pierwszego logowania katalog domowy zwyczajnie nie jest dostępny, a więc niedostępny jest także katalog ~/.ssh.

Generowanie kluczy SSH

Klucze SSH to nic innego jak pliki tekstowe zawierające unikalny ciąg znaków, stanowiący nasz klucz, oraz ew. dodatkowe parametry. Do wygenerowania pary kluczy SSH służy program ssh-keygen. Parę kluczy można uzyskać stosując różnego rodzaju algorytmy kryptograficzne; obecnie, coraz częściej spotykanym i zalecanym jest stosowanie algorytmów krzywych eliptycznych. Aby bezpiecznie korzystać z kluczy SSH użytkownik nie musi wiedzieć zupełnie nic o tym, jak działa dany algorytm. Podczas generowania kluczy zostaniemy zapytani o dwie ważne rzeczy: + ścieżkę do pliku klucza: standardowo, będzie to katalog .ssh w katalogu domowym użytkownika; ważne, aby nazwy kluczy nie kolidowały, gdyż możemy ich mieć kilka. + hasło do klucza: jest to najważniejszy parametr. W większości standardowych zastosowań należy ustawić silne hasło klucza. W wypadku np. kradzieży dysku lub notebooka, jeżeli trzymaliśmy dane niezaszyfrowane, hasło do klucza nie pozwoli nikomu uzyskać dostępu do miejsc zabezpieczonych kluczem i przez to wyrządzić więcej szkód.


# ssh-keygen -t ed25519 -C "komentarz_do_klucza"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/kmwil/.ssh/id_ed25519): test
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in test
Your public key has been saved in test.pub
The key fingerprint is:
SHA256:cTKSTiSB5OWS4hgR1wyEOwRdJBmUgy5FO1QAylvWkjE komentarz_do_klucza
The key's randomart image is:
+--[ED25519 256]--+
|*@%EB..          |
|=*B*Bo .         |
|*+*...+ + .      |
|*++o.o . =       |
|o+    . S        |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

W wyniku działania polecenia wygenerowane zostaną dwa pliki, w tym przypadku nasz tajny plik klucza prywatnego test oraz część publiczna, test.pub. Klucz prywatny powinien zostać umieszczony w katalogu domowym w podkatalogu ~/.ssh oraz mieć nadane odpowiednie uprawnienia (tak, jak katalog kluczy): + ~/.ssh powinien mieć uprawnienia 700. + ~/.ssh/test klucz prywatny powinien mieć uprawnienia 600.

Transfer kluczy SSH

Aby móc zalogować się za pomocą klucza SSH, jego publiczna część musi znaleźć się na docelowej maszynie lub w docelowym serwisie (np. Gitlab). Wtedy, przy użyciu unikalnej, tajnej, prywatnej części klucza będącej tylko i wyłącznie w naszym posiadaniu możemy uwierzytelnić się w żądanym miejscu. Do transferu klucza publicznego służy polecenie ssh-copy-id. Przykładowo, jeżeli chcemy umieścić klucz publiczny na serwerze students, powinniśmy wykonać następujące polecenie i postępować zgodnie z instrukcją wyświetlaną na ekranie. Każde kolejne logowanie powinno odbyć się już za pomocą klucza SSH.

Należy zwrócić uwagę, aby przez przypadek nigdy nie kopiować klucza prywatnego. Istnieją oczywiście uzasadnione sytuacje, jak jego backup (np. na zaszyfrowanym nośniku) czy przenoszenie się na inny komputer, gdzie jest to wymagane, w każdym z przypadków zalecana jest wzmożona uwaga.


# ssh-copy-id -i ~/.ssh/test.pub login_ze_students@students.mimuw.edu.pl

Zarządzanie wieloma kluczami SSH

Posiadanie wielu kluczy do różnych zastosowań jest dobrą praktyką, może natomiast przysporzyć nieco kłopotów. Często spotykanym problemem jest odmowa uwierzytelnienia na serwerze, na którym mamy poprawny publiczny klucz SSH. Komunikat, który możemy zobaczyć w takim przypadku to To many authentication falitures. Wynika to z faktu, iż podczas logowania nasz system próbuje się uwierzytelnić każdym z posiadanych kluczy, próbując każdego po kolei; po n-tej nieudanej próbie serwer odmówi współpracy.

Jednym z rozwiązań jest wskazanie podczas logowania, którego klucza należy użyć. Służy do tego flaga -i.


# ssh -i ~/.ssh/test login_ze_students@students.mimuw.edu.pl

Innym sposobem jest utworzenie pliku ~/.ssh/config. Możemy w nim zdefiniować każdy komputer lub serwer, do którego się łączymy, wskazując nazwę użytkownika, plik klucza SSH do wykorzystania, niestandardowe numery portów i wiele innych (patrz man ssh_config). Przykładowa, podstawowa konfiguracja dla serwera studenckiego jest następująca.


Host students
    Hostname students.mimuw.edu.pl
    User kmwil
    AddressFamily inet
    IdentityFile ~/.ssh/id_ed25519

Agent SSH

Aby uniknąć ciągłego wpisywania hasła odblokowującego klucz prywatny, można skorzystać z agenta SSH, czyli programu bezpiecznie przechowującego odblokowane klucze do czasu wyłączenia komputera, wylogowania lub upłynięcia czasu takiego schowka. W większości systemów z graficznym interfejsem agent jest uruchamiany wraz ze środowiskiem, na serwerach należy taki program uruchomić. W terminalu należy wydać następujące polecenie:


# eval "$(ssh-agent -s)"

Dodawanie kluczy do agenta SSH

Dodanie klucza prywatnego wymaga wywołania programu ssh-add, wskazania pliku klucza oraz podania hasła odblokowującego. Po tej czynności klucz zostanie umieszczony w agencie i będzie wykorzystywany bez konieczności podawania hasła.


# ssh-add ~/.ssh/id_ed25519