🢂SSH ‑ Cheatsheet (ściąga)

Ściąga z SSH (ang. Secure Shell) - to protokół komunikacyjny służący do bezpiecznego zdalnego zarządzania komputerami.

SSH (ang. Secure Shell) to protokół komunikacyjny służący do bezpiecznego zdalnego zarządzania komputerami. Zapewnia szyfrowane połączenie między klientem a serwerem, co chroni dane przed podsłuchem i manipulacją. Jest to niezbędne narzędzie dla administratorów systemów, programistów i użytkowników domowych, którzy chcą bezpiecznie łączyć się z komputerami zdalnymi. Podsumowując, SSH jest potężnym narzędziem oferującym bezpieczny sposób na komunikację i zarządzanie systemami przez sieć. Jednak jego skuteczność zależy od właściwej konfiguracji, zarządzania kluczami i ciągłego monitorowania zagrożeń bezpieczeństwa.

Analiza SWOT SSH

Mocne Strony SSH (Strengths)

  1. Bezpieczeństwo: SSH oferuje silne szyfrowanie danych, co zapewnia bezpieczny sposób na zdalny dostęp do serwerów i transfer plików.
  2. Uniwersalność: Możliwość wykorzystania w różnych scenariuszach, takich jak zarządzanie serwerami, bezpieczny transfer plików (SFTP) oraz przekierowanie portów.
  3. Szerokie Akceptowanie: Jest standardem de facto dla bezpiecznej komunikacji w systemach Unix i Linux, a także dostępny na platformach Windows.
  4. Autoryzacja wieloskładnikowa: SSH wspiera zaawansowane metody uwierzytelniania, w tym klucze publiczne, hasła i uwierzytelnianie wieloskładnikowe.

Słabe Strony SSH (Weaknesses)

  1. Konfiguracja: Niewłaściwa konfiguracja (np. słabe hasła, zbyt szerokie uprawnienia) może obniżyć poziom bezpieczeństwa.
  2. Zarządzanie Kluczami: Wymaga efektywnego zarządzania kluczami publicznymi i prywatnymi, co może być skomplikowane w dużych organizacjach.
  3. Kompleksowość: Dla początkujących użytkowników, nauka i zrozumienie różnych opcji i konfiguracji SSH może być trudne.

Szanse SSH (Opportunities)

  1. Rozwój technologii kryptograficznych: Wprowadzenie nowszych, bardziej zaawansowanych algorytmów szyfrowania może jeszcze bardziej zwiększyć bezpieczeństwo SSH.
  2. Automatyzacja i zarządzanie konfiguracją: Integracja z narzędziami do automatyzacji, jak Ansible, Puppet czy Chef, otwiera nowe możliwości dla zarządzania konfiguracją i automatyzacji zadań administracyjnych.
  3. Rozwój IoT: SSH może służyć jako bezpieczny mechanizm dla komunikacji i zarządzania urządzeniami IoT.

Zagrożenia SSH (Threats)

  1. Zaawansowane Ataki Cybernetyczne: Techniki takie jak ataki typu "man-in-the-middle" mogą stanowić zagrożenie, jeśli nie zostaną podjęte odpowiednie środki bezpieczeństwa.
  2. Wyciek Kluczy Prywatnych: Utrata klucza prywatnego do rąk niepowołanych osób może narazić systemy na nieautoryzowany dostęp.
  3. Regulacje Prawne: W niektórych jurysdykcjach, regulacje dotyczące szyfrowania mogą wpłynąć na użycie i rozpowszechnianie technologii SSH.

Cheatsheet - Logowanie za pomocą klucza

Generowanie kluczy SSH:

  1. Otwórz terminal.
  2. Wpisz polecenie: ssh-keygen -t rsa -b 4096
  3. Naciśnij Enter i zaakceptuj domyślną lokalizację pliku.
  4. Wprowadź hasło do klucza (opcjonalnie).
  5. Powtórz kroki 3 i 4, aby wygenerować klucz dla innego użytkownika.

Kopiowanie klucza publicznego:

  1. Wpisz polecenie: cat ~/.ssh/id_rsa.pub
  2. Skopiuj wyświetlony tekst.
  3. Zaloguj się na serwer, do którego chcesz się logować bez hasła.
  4. Wpisz polecenie: vim ~/.ssh/authorized_keys
  5. Wklej skopiowany tekst na końcu pliku.
  6. Zapisz i zamknij plik.

Logowanie za pomocą klucza:

  1. Wpisz polecenie: ssh uzytkownik@adres_ip
  2. Zostaniesz poproszony o podanie hasła do klucza.
  3. Po wprowadzeniu hasła zalogujesz się na serwer bez konieczności podawania hasła użytkownika.

Dodatkowe informacje:

  • Możesz użyć różnych typów kluczy, np. RSA, DSA, ECDSA.
  • Możesz ustawić różne opcje dla kluczy, np. czas wygaśnięcia.
  • Możesz użyć agenta SSH do przechowywania kluczy w pamięci.
  • Możesz używać kluczy SSH do logowania się do innych usług, np. GitLab, GitHub.

Przydatne polecenia:

  • ssh-keygen: generowanie kluczy SSH
  • ssh-copy-id: kopiowanie klucza publicznego na serwer
  • ssh: logowanie za pomocą klucza
  • ssh-add: dodanie klucza do agenta SSH
  • ssh-agent: zarządzanie agentem SSH
  • ssh-config: konfiguracja klienta SSH

Cheatsheet SSH dla administratora Debiana

1. Podłączenie do serwera:

ssh uzytkownik@adres_ip

Opis: Podłącza się do serwera o podanym adresie IP jako użytkownik o podanej nazwie.

2. Podłączenie z użyciem klucza SSH:

ssh -i klucz.pem uzytkownik@adres_ip

Opis: Podłącza się do serwera o podanym adresie IP jako użytkownik o podanej nazwie, używając klucza SSH o nazwie klucz.pem

3. Kopiowanie plików na serwer:

scp plik.txt uzytkownik@adres_ip:/sciezka/na/serwerze

Opis: Kopiuje plik plik.txt na serwer do katalogu o podanej ścieżce jako użytkownik o podanej nazwie.

4. Pobieranie plików z serwera:

scp uzytkownik@adres_ip:/sciezka/na/serwerze plik.txt

Opis: Pobiera plik o nazwie plik.txtz serwera z katalogu o podanej ścieżce jako użytkownik o podanej nazwie.

5. Wykonywanie poleceń na serwerze:

ssh uzytkownik@adres_ip 'polecenie'

Opis: Wykonuje podane polecenie na serwerze jako użytkownik o podanej nazwie.

6. Uruchamianie skryptu na serwerze:

ssh uzytkownik@adres_ip 'bash skrypt.sh'

Opis: Uruchamia skrypt o nazwie skrypt.sh na serwerze jako użytkownik o podanej nazwie.

7. Przekazywanie portów:

ssh -L port_lokalny:port_zdalny uzytkownik@adres_ip

Opis: Przekazuje port lokalny o numerze port_lokalny na port zdalny o numerze port_zdalny na serwerze.

8. Tworzenie tunelu SSH:

ssh -L 8080:localhost:80 uzytkownik@adres_ip

Opis: Tworzy tunel SSH, który przekierowuje ruch na porcie 8080 na lokalny port 80.

9. Podłączenie do serwera przez proxy:

ssh -o 'ProxyCommand=ssh proxy_user@proxy_address:proxy_port nc %h %p' uzytkownik@adres_ip

Opis: Podłącza się do serwera przez proxy o podanym adresie IP i porcie, używając użytkownika o podanej nazwie.

10. Logowanie do serwera z użyciem sudo:

ssh -i klucz.pem uzytkownik@adres_ip 'sudo su -'

Opis: Podłącza się do serwera o podanym adresie IP jako użytkownik o podanej nazwie, używając klucza SSH o nazwie klucz.pem

11. Wyświetlanie listy użytkowników:

ssh uzytkownik@adres_ip 'cat /etc/passwd'

Opis: Wyświetla listę użytkowników na serwerze.

12. Wyświetlanie informacji o systemie:

ssh uzytkownik@adres_ip 'lsb_release -a'

Opis: Wyświetla informacje o systemie operacyjnym na serwerze.

*13. Aktualizacja pakietów:

ssh uzytkownik@adres_ip 'sudo apt update && sudo apt upgrade'

Opis: Aktualizuje pakiety na serwerze.

14. Uruchamianie usługi:

ssh uzytkownik@adres_ip 'sudo systemctl start nazwa_usługi'

Opis: Uruchamia usługę o podanej nazwie na serwerze.

15. Zatrzymywanie usługi:

ssh uzytkownik@adres_ip 'sudo systemctl stop nazwa_usługi'

Opis: Zatrzymuje usługę o podanej nazwie na serwerze.

16. Zmiana portu SSH (konfiguracja)

Port 2222

Opis: Ustawienie niestandardowego portu SSH w pliku /etc/ssh/sshd_config.

17. Wyłączenie logowania hasłem (konfiguracja)

PasswordAuthentication no

Opis: Wymuszenie logowania kluczem SSH w /etc/ssh/sshd_config.

18. Ograniczenie użytkowników SSH (konfiguracja)

AllowUsers uzytkownik

Opis: Zezwolenie tylko wybranym użytkownikom na logowanie przez SSH.

19. Uruchomienie SSH na niestandardowym porcie

ssh -p port uzytkownik@adres_serwera

Opis: Logowanie do serwera SSH na niestandardowym porcie.

20 Wygenerowanie nowego klucza SSH

ssh-keygen -t rsa -b 4096

Opis: Utworzenie nowego klucza RSA o długości 4096 bitów.

21. Użycie wersji protokołu SSH 2

Protocol 2

Opis: Wymuszenie użycia bezpieczniejszej wersji protokołu w /etc/ssh/sshd_config.

22. Włączenie KeepAlive

ClientAliveInterval 300
ClientAliveCountMax 2

Opis: Utrzymanie aktywności połączenia SSH przez serwer.

23. Ograniczenie liczby prób logowania

MaxAuthTries 3

Opis: Ograniczenie do 3 prób autentykacji na połączenie.