Ta strona wygląda najlepiej z włączoną obsługą JavaScript
Serwer SSH
· ☕ 11 min czytania
· 🐧 sysadmin
Ćwiczenia do wykonania:
Wygeneruj parę kluczy RSA za pomocą ssh-keygen
Wyeksportuj klucz publiczny z klienta do serwera za pomocą ssh-copy-id
Zaloguj się za pomocą hasła poprzez ssh do serwera i przełącz na konto root za pomocą komendy sudo - su lub sudo -i
Włącz logowanie kluczami i wyłącz logowanie hasłem. Zapisz zmiany i zrestartuj usługę ssh.
Nie zamykaj bieżącej sesji. Otwórz nową sesję ssh i zaloguj się do serwera za pomocą klucza prywatnego.
Jeśli udało ci się zalogować, zabezpiecz serwer korzystając z poniższych informacji a następnie zrestartuj usługę ssh na drugiej sesji.
Pamiętaj, by pierwszą sesję ssh cały czas mieć otwartą, by w razie potrzeby móc cofnąć zmiany.
Zrestartuj usługę ssh i sprawdź, czy możesz zalogować się za pomocą trzeciej sesji do serwera. Jeśli tak, udało ci się poprawnie skonfigurować serwer ssh.
Dla chętnych napisz skrypt z użyciem sed lub awk, który dokona zmian po stronie serwera w pliku sshd_config, aby nie trzeba było ręcznie nanosić zmian.
OpenSSH : KeyBoard-Intereractive Auth
OpenSSH jest już domyślnie zainstalowany, więc nie ma potrzeby instalowania nowych pakietów. Domyślnie możesz logować się za pomocą KeyBoard-Interactive Authentication, ale zmień niektóre ustawienia dla bezpieczeństwa jak poniżej.
Jeśli OpenSSH jednak nie jest jeszcze zainstalowany możesz go zainstalować za pomocą następującego polecenia:
SLES
Aby zainstalować OpenSSH wpisz:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# odśwież repozytoria sudo zypper ref
# zainstaluj OpenSSH sudo zypper -n in openssh
# włącz OpenSSH podczas boot-owania sudo systemctl enable sshd
# wystartuj openSSH sudo systemctl start sshd
# włącz regułę w firewalld dla ssh sudo firewall-cmd --permanent --add-service=ssh
success
# Przeładuj reguły firewalld sudo firewall-cmd --reload
success
Połącz się z serwerem SSH za pomocą zwykłego użytkownika.
1
2
3
4
5
6
7
8
# ssh [login_user@hostname_or_IP_address]adrian@client:~> ssh adrian@example.com
The authenticity of host 'example.com (10.0.0.50)' can't be established.
ECDSA key fingerprint is SHA256:h0QhlXgCZ860UjM8sAjY6Wmrr2EqSIY5UADBi0wAFV4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'example.com,10.0.0.50' (ECDSA) to the list of known hosts.
Password: # login user's password
adrian@example.com:~> # just logined
Uwierzytelnianie parą kluczy SSH
Skonfiguruj serwer SSH do logowania za pomocą Key-Pair Authentication. Utwórz klucz prywatny dla klienta i klucz publiczny dla serwera, aby to zrobić.
Utwórz Key-Pair dla każdego użytkownika, więc zaloguj się wspólnym użytkownikiem na SSH Server Host i pracuj jak poniżej.
# utwórz parę kluczy na klienciessh-keygen -t rsa -b 4096 -C "imię i nazwisko"Generating public/private rsa key pair.
Enter file in which to save the key (/home/adrian/.ssh/id_rsa): /home/adrian/.ssh/p-tech
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/adrian/.ssh/p-tech
Your public key has been saved in /home/adrian/.ssh/p-tech.pub
The key fingerprint is:
SHA256:IPtApVZ/8o6mCY3lKSvcfEtkD6wzHJ0LzKeHFm3qbxs adrian@G02PLXN05963
The key's randomart image is:
+---[RSA 4096]----+
| o || + . ||= . o . ||= * o + || O % S . || . ^ = o || . o& E + . ||oooOo=|| .o+*o |+----[SHA256]-----+
Aby wygenerować passphrase możesz użyć następującego polecenia w osobnym oknie CLI
1
hexdump -vn16 -e'4/4 "%08X" 1 "\n"' /dev/urandom
Wylistuj parę kluczy
1
2
3
adrian@linux:~> ll ~/.ssh/p-tech*
-rw------- 1 adrian adrian 3.4K Apr 1 16:44 /home/adrian/.ssh/p-tech
-rw-r--r-- 1 adrian adrian 745 Apr 1 16:44 /home/adrian/.ssh/p-tech.pub
Dodaj poniższe wpisy do pliku .bashrc lub .zshrc znajdującego się w katalogu /home/user. Pierwszy wpis uruchamia agenta ssh, a drugi ładuje do niego Twój klucz prywatny. Jeśli ustawiłeś passphrase na swoim kluczu, agent zapyta o jego wpisanie. Możesz dodać więcej niż jeden klucz. Należy pamiętać, że za każdym razem, gdy Bash lub Zsh uruchomi proces restartu lub rozruchu systemu operacyjnego, w CLI poprosi o podanie passphrase.
Aby odłączyć nieaktywnych klientów, jeśli używasz bash jako powłoki, możesz ustawić wartość TMOUT w ogólnosystemowym profilu domyślnym lub na użytkownika: