Korzystanie z SSH w Ubuntu! Kompletny przewodnik po połączeniach, zmianie portu i uwierzytelnianiu kluczem publicznym

目次

1. Wstęp

Korzystając z SSH na Ubuntu, możesz bezpiecznie uzyskać dostęp i zarządzać swoim serwerem lub komputerem PC zdalnie. Ten przewodnik wyjaśnia wszystko, od podstaw SSH po instalację serwera SSH na Ubuntu, środki bezpieczeństwa i rozwiązywanie problemów. Jest zaprojektowany tak, aby był przyjazny dla początkujących i łatwy do zrozumienia.

Czym jest SSH?

SSH (Secure Shell) to protokół umożliwiający bezpieczne zdalne połączenia przez sieć. W przeciwieństwie do tradycyjnego Telnet lub FTP, SSH szyfruje dane, co znacznie zmniejsza ryzyko podsłuchiwania i manipulacji.

Główne zastosowania SSH na Ubuntu

SSH jest powszechnie używany na Ubuntu w następujących celach:

  • Zdalne zarządzanie serwerem : Obsługa serwera Ubuntu z zdalnej lokalizacji.
  • Transfer plików : Bezpieczne przesyłanie plików za pomocą SCP lub SFTP.
  • Przekierowanie portów : Ustanowienie bezpiecznego zdalnego połączenia.

Czego dowiesz się z tego przewodnika

  • Podstawowe koncepcje i działanie SSH
  • Jak zainstalować serwer SSH na Ubuntu
  • Ustawienia połączeń SSH i rozwiązywanie problemów
  • Środki bezpieczeństwa dla SSH
年収訴求

2. Podstawowe koncepcje SSH

Aby efektywnie korzystać z SSH, ważne jest zrozumienie jego podstawowych koncepcji. Ten rozdział wyjaśnia, jak działa SSH i różne metody uwierzytelniania.

Jak działa SSH

SSH to protokół, który ustanawia bezpieczne połączenie między klientem a serwerem. Domyślnie używa portu TCP 22 do szyfrowanej komunikacji.

Główne funkcje

  • Zdalne logowanie : Wykonywanie poleceń na serwerze.
  • Transfer plików : Bezpieczne wysyłanie danych za pomocą SCP lub SFTP.
  • Przekierowanie portów : Połączenie z innymi usługami za pośrednictwem SSH.

Metody uwierzytelniania SSH

SSH obsługuje głównie dwie metody uwierzytelniania:

Uwierzytelnianie hasłem

  • Logowanie za pomocą nazwy użytkownika i hasła.
  • Łatwe w użyciu, ale podatne na ataki brute force.

Uwierzytelnianie kluczem publicznym

  • Uwierzytelnianie za pomocą pary kluczy publicznych i prywatnych.
  • Bardziej bezpieczne i zalecane zamiast uwierzytelniania hasłem.

Zalety SSH

  • Szyfrowanie danych : Chroni komunikację przed przechwyceniem.
  • Łatwe zdalne zarządzanie : Dostępne z dowolnego miejsca.
  • Wzmocnione bezpieczeństwo : Pomaga zapobiegać nieautoryzowanemu dostępowi.

3. Instalacja serwera SSH na Ubuntu

Aby korzystać z SSH na Ubuntu, musisz zainstalować serwer OpenSSH. Ten rozdział wyjaśnia kroki instalacji i podstawową konfigurację.

Instalacja serwera OpenSSH

Możesz zainstalować serwer OpenSSH na Ubuntu za pomocą następującego polecenia:

sudo apt update
sudo apt install openssh-server

Po instalacji sprawdź, czy usługa SSH działa:

sudo systemctl status ssh

Uruchamianie i sprawdzanie usługi SSH

Aby ręcznie uruchomić lub zatrzymać usługę SSH, użyj następujących poleceń:

# Start SSH
sudo systemctl start ssh

# Enable SSH to start automatically on reboot
sudo systemctl enable ssh

# Stop SSH
sudo systemctl stop ssh

Konfigurowanie UFW (Uncomplicated Firewall)

Jeśli UFW jest domyślnie włączony, połączenia SSH mogą być blokowane. Zezwól na dostęp SSH, uruchamiając:

sudo ufw allow ssh
sudo ufw enable

4. Konfigurowanie połączeń SSH

Aby bezpiecznie korzystać z SSH, właściwa konfiguracja jest niezbędna. Ten rozdział wyjaśnia, jak skonfigurować uwierzytelnianie kluczem publicznym.

Generowanie pary kluczy

Po stronie klienta uruchom następujące polecenie, aby utworzyć parę kluczy publicznych i prywatnych:

ssh-keygen -t rsa -b 4096

Domyślnie klucz prywatny jest zapisywany w ~/.ssh/id_rsa, a klucz publiczny w ~/.ssh/id_rsa.pub.

Kopiowanie klucza publicznego na serwer

Przenieś wygenerowany klucz publiczny na serwer SSH:

ssh-copy-id username@server-ip

Alternatywnie, ręcznie skopiuj klucz za pomocą SCP:

scp ~/.ssh/id_rsa.pub username@server-ip:~/

Na serwerze przenieś klucz publiczny do odpowiedniego katalogu:

mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Edycja pliku sshd_config

Wzmocnij bezpieczeństwo, modyfikując plik konfiguracyjny SSH:

sudo nano /etc/ssh/sshd_config

Aktualizuj następujące ustawienia:

# Disable password authentication (enable public key authentication only)
PasswordAuthentication no

# Disable root login
PermitRootLogin no

# Change the default SSH port (example: 2222)
Port 2222

Po wprowadzeniu zmian uruchom ponownie usługę SSH:

sudo systemctl restart ssh

5. Łączenie się z serwerem SSH

Po skonfigurowaniu serwera SSH musisz połączyć się z nim z maszyny klienckiej. Ten rozdział wyjaśnia podstawowe metody połączenia SSH oraz obsługę zmian portów.

Podstawowa komenda połączenia SSH

Aby połączyć się z serwerem SSH z klienta, użyj:

ssh username@server-ip

Na przykład, jeśli adres IP serwera to 192.168.1.10, a nazwa użytkownika to ubuntu, wpisz:

ssh ubuntu@192.168.1.10

Podczas pierwszego połączenia zobaczysz monit weryfikacji odcisku palca. Wpisz „yes”, aby zaakceptować i kontynuować.

Łączenie z niestandardowym portem

Jeśli domyślny port (22) został zmieniony, określ port za pomocą opcji -p:

ssh -p 2222 ubuntu@192.168.1.10

Łączenie z kluczem prywatnym

Jeśli używasz uwierzytelniania kluczem publicznym, określ klucz prywatny za pomocą opcji -i:

ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10

Uruchamianie zdalnych poleceń przez SSH

Możesz wykonywać zdalne polecenia bez interaktywnego logowania na serwer:

ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"

Jest to przydatne do automatyzacji i zdalnego zarządzania.

Przesyłanie plików za pomocą SCP

Użyj SSH do przesyłania plików między lokalnym komputerem a zdalnym serwerem.

Z lokalnego na zdalny

scp filename username@server-ip:/remote/directory

Przykład:

scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/

Z zdalnego na lokalny

scp username@server-ip:/remote/file ./local/directory

Przykład:

scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./

Zarządzanie plikami za pomocą SFTP

Użyj SFTP do zarządzania plikami przez SSH:

sftp ubuntu@192.168.1.10

Po połączeniu możesz używać poleceń takich jak:

ls        # List files
cd        # Change directory
put file  # Upload file from local to remote
get file  # Download file from remote to local
exit      # Exit SFTP session

6. Rozwiązywanie problemów z połączeniami SSH

Problemy z połączeniami SSH są powszechne. Ten rozdział omawia typowe problemy i ich rozwiązania.

Typowe błędy połączeń SSH i ich naprawy

Jeśli połączenie SSH nie powiodło się, rozważ następujące przyczyny:

1. Serwer SSH nie jest uruchomiony

Sprawdź, czy serwer SSH jest aktywny:

sudo systemctl status ssh

Rozwiązanie:

  • Jeśli serwer nie jest uruchomiony, uruchom go za pomocą:
sudo systemctl start ssh
  • Upewnij się, że SSH uruchamia się automatycznie po restarcie:
sudo systemctl enable ssh

2. Zapora ogniowa (UFW) blokuje SSH

Jeśli UFW (Uncomplicated Firewall) jest włączony, może blokować dostęp SSH.

Rozwiązanie:

  • Sprawdź bieżące ustawienia UFW:
sudo ufw status
  • Zezwól na połączenia SSH:
sudo ufw allow ssh

(Jeśli używasz niestandardowego portu, uruchom sudo ufw allow <port>)

  • Uruchom ponownie UFW:
sudo ufw reload

3. Numer portu SSH został zmieniony

Jeśli SSH działa na innym porcie, upewnij się, że podajesz poprawny port podczas łączenia.

Rozwiązanie:

  • Sprawdź skonfigurowany port SSH:
sudo grep Port /etc/ssh/sshd_config
  • Użyj poprawnego portu podczas łączenia:
ssh -p 2222 username@server-ip

4. Nieprawidłowe uprawnienia kluczy SSH

Nieprawidłowe uprawnienia plików dla kluczy SSH mogą powodować niepowodzenie uwierzytelniania.

Rozwiązanie:

  • Upewnij się, że klucz prywatny ma poprawne uprawnienia:
chmod 600 ~/.ssh/id_rsa
  • Upewnij się, że plik kluczy autoryzowanych jest poprawnie ustawiony:
chmod 644 ~/.ssh/authorized_keys

5. Sprawdzanie logów SSH

Aby zdiagnozować problemy z SSH, sprawdź logi:

sudo journalctl -u ssh --no-pager | tail -n 20

Do monitorowania logów w czasie rzeczywistym:

sudo tail -f /var/log/auth.log

7. Wzmacnianie bezpieczeństwa SSH

SSH jest potężnym narzędziem do zdalnego dostępu, ale bez odpowiednich środków bezpieczeństwa może stać się celem nieautoryzowanego dostępu i ataków brute‑force. Ta sekcja wyjaśnia zalecane konfiguracje zwiększające bezpieczeństwo SSH.

1. Wyłącz uwierzytelnianie hasłem i używaj uwierzytelniania kluczem publicznym

Domyślnie SSH zezwala na uwierzytelnianie hasłem, co zwiększa ryzyko ataków brute‑force.zejście na uwierzytelnianie kluczem publicznym podnosi poziom bezpieczeństwa.

Kroki

  1. Edytuj plik sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Zmodyfikuj (lub dodaj) następujące ustawienia:
PasswordAuthentication no
PubkeyAuthentication yes
  1. Zrestartuj usługę SSH:
sudo systemctl restart ssh

To zapewnia, że SSH akceptuje jedynie uwierzytelnianie przy użyciu kluczy publicznych. Upewnij się, że skonfigurowałeś uwierzytelnianie kluczem publicznym przed wprowadzeniem tej zmiany.

2. Zmień domyślny port SSH

Używanie domyślnego portu SSH (22) czyni go łatwym celem ataków. Zmiana portu zwiększa bezpieczeństwo.

Kroki

  1. Otwórz plik sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Zmodyfikuj numer portu (np. zmień na 2222):
Port 2222
  1. Zezwól na nowy port w zaporze sieciowej:
sudo ufw allow 2222/tcp
  1. Zrestartuj usługę SSH:
sudo systemctl restart ssh
  1. Przetestuj nowy port:
ssh -p 2222 username@server-ip

3. Wyłącz logowanie jako root

Domyślnie użytkownik root może logować się przez SSH, co stanowi ryzyko bezpieczeństwa. Zaleca się zezwolić na połączenia tylko wybranym użytkownikom.

Kroki

  1. Otwórz plik sshd_config:
sudo nano /etc/ssh/sshd_config
  1. Zmodyfikuj następujące ustawienie:
PermitRootLogin no
  1. Zrestartuj usługę SSH:
sudo systemctl restart ssh

4. Zapobiegaj atakom brute‑force przy pomocy Fail2Ban

Fail2Ban monitoruje próby logowania i blokuje adresy IP po wielokrotnych nieudanych próbach uwierzytelnienia.

Instalacja i konfiguracja

  1. Zainstaluj Fail2Ban:
sudo apt install fail2ban -y
  1. Skopiuj domyślny plik konfiguracyjny:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  1. Edytuj jail.local :
sudo nano /etc/fail2ban/jail.local
  1. Zmodyfikuj ustawienia w sekcji [sshd] :
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
  • maxretry : Maksymalna dopuszczalna liczba prób logowania.
  • bantime : Czas (w sekundach), przez który adres IP będzie zablokowany.
  • findtime : Okres (w sekundach), w którym liczone są nieudane próby.
  1. Zrestartuj Fail2Ban:
sudo systemctl restart fail2ban
  1. Sprawdź status Fail2Ban:
sudo fail2ban-client status sshd

8. Najczęściej zadawane pytania (FAQ)

Ta sekcja odpowiada na typowe pytania i problemy związane z używaniem SSH.

P1: Dlaczego połączenie SSH jest odrzucane?

Możliwe przyczyny:

  • Usługa SSH nie działa → Sprawdź poleceniem sudo systemctl status ssh
  • Zapora blokuje SSH → Zezwól na SSH poleceniem sudo ufw allow ssh
  • Używany jest niestandardowy port → Połącz się używając ssh -p <port> username@server-ip

P2: Jak zmienić domyślny port SSH?

Zmień plik sshd_config:

sudo nano /etc/ssh/sshd_config

Zmień port:

Port 2222

Następnie zrestartuj SSH:

sudo systemctl restart ssh

P3: Jak zezwolić tylko wybranym adresom IP na dostęp do SSH?

Zmień ustawienia zapory sieciowej:

sudo ufw allow from 192.168.1.100 to any port 22

Lub użyj hd_config:

AllowUsers username@192.168.1.100

9. Zakończenie

Ten przewodnik omówił wszystko, od podstaw SSH po ulepszenia bezpieczeństwa. Oto najważniejsze wnioski:

  • Używaj uwierzytelniania kluczem publicznym zamiast haseł.
  • Zmieniaj domyślny port SSH dla lepszego bezpieczeństwa.
  • Wyłącz logowanie jako root, aby zapobiec nieautoryzowanemu dostępowi.
  • Korzystaj z Fail2Ban, aby blokować ataki brute‑force.
  • Monitoruj logi SSH w celu rozwiązywania problemów.

Dodatkowe zasoby

Stosując te najlepsze praktyki, możesz utrzymać bezpieczne i wydajne środowisko SSH. 🚀

侍エンジニア塾