SSH (secure shell) dla uczniów szkoły średniej
Instalacja serwera SSH
Standardowo w systemie zainstalowany jest klient ssh - OpenSSH SSH client (remote login program).
sudo apt-get install ssh
Zostanie zainstalowany pakiet openssh-server. Utworzy on klucze RSA i DSA.
Konfigurowanie openssh-server (1:5.1p1-5ubuntu1) ...
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
-
Restarting OpenBSD Secure Shell server sshd
Klucz publiczny i prywatny
Dzięki kluczowi publicznemu dokonamy szyfrowania wiadomości, którą odszyfrować może jedynie posiadacz klucza prywatnego.
Klucz publiczny używamy wyłącznie do szyfrowania, natomiast prywatny do rozszyfrowywania wiadomości.
Protokół RSA i DSA umożliwia przeprowadzanie bezpiecznej autoryzacji bez konieczności przesyłania przez sieć jakichkolwiek poufnych informacji.
Uwagi:
Wystraczy wygenerować tylko jedną parę kluczy. Klucz publiczny powinien znajdować na wszystkich maszynach, gdzie chcemy się zalogować za pomocą klucza prywatnego.
Klucz prywatny jak sama nazwa wskazuje nie powinien trafić w niepowołane ręce (zmienić uprawnienia chmod 600).
Podczas generowania kluczy zostaniemy zapytani o hasło (passphrase), która dodatkowo zabezpieczy klucz prywatny, jeśli trafi w niepowołane ręce.
Konfiguracja serwera SSH
Warto sprawdzić plik /etc/ssh/sshd_config . Gdzie mamy wiele ciekaeych informacji:
a) ServerKeyBits 768 - długość klucza im wyższa tym trudniejsza do złamania – można użyć klucza od długości 2048B, choć 768 i tak będzie trudne do złamania.
b) PermitRootLogin yes – zabezpieczenie przed logowaniem na konto root
c) AllowUsers szkolnylug – zezwolenie użytkownikom i grupom na kożystanie z SSH
d) Port 22 – warto zmienić port na jakiś inny np.: 1456 – zabezpieczenie przed logowaniem niepowołanych osób. Wówczas logujemy się w ten sposób:
ssh szkolnylug@serwer.com -p 1456
Logowanie bez hasła na serwer z obsługą SSH
Załóżmy, że mamy serwer do którego chcemy się logować bez wpisywania hasła za pomocą protokołu SSH. Cóż należy zrobić?
Tworzymy parę kluczy RSA (dla wersji 1.x SSH). Wersja SSH2 umożliwia użycie protokołu DSA.
Używamy do tego polecenia: ssh-keygen
szkolnylug@szkolnylug-desktop:~$ ssh-keygen
Generating public/private rsa key pair. (utworzenie pary kluczy publicznego i prywatnego)
Enter file in which to save the key (/home/szkolnylug/.ssh/id_rsa): //nazwa dla plików publicznego i prywatnego
Enter passphrase (empty for no passphrase): //zabezpieczenie hasłem pary kluczy
Enter same passphrase again:
Your identification has been saved in /home/szkolnylug/.ssh/id_rsa. //klucz prywatny
Your public key has been saved in /home/szkolnylug/.ssh/id_rsa.pub. //klucz publiczny
The key fingerprint is: //odcisk palca
fc:dd:3b:00:2a:5a:fe:ba:a9:b3:f2:bf:9f:5a:0f:d9 szkolnylug@szkolnylug-desktop
The key's randomart image is:
+--[ RSA 2048]----+
| |
| o . |
| + o |
| .. o |
| S o |
| . .o+ |
| ..+.E |
| . . .o o.. |
| o+=*=+.o. |
+-----------------+
Odcisk palca to swoista wizytówka serwera. Jeżeli będziemy się logować pierwszy raz na dany serwer zostaniemy zapytani czy ten odcisk ma być zapisany do bazy innych znanych hostów, gdzie przechowywane klucze publiczne.
Baza ta znajduje się w katalogu domowym ~/.ssh/known_hosts.
Jeżeli na przykład przeinstalowaliśmy serwer lub wygenerowaliśmy nowy klucz publiczny to odcisk będzie zupełnie inny. Dlatego należy wykasować stary wpis lub wykasować plik ~/.ssh/known_hosts aby umożliwić autoryzację.
No dobrze. Teraz po wygenerowaniu pary kluczy zmieniamy uprawnienia dostępu do klucza prywatnego:
chmod 600 ~/.ssh/id_rsa
Tworzymy klucz publiczny, który będzie kopią oryginału.
cat id_rsa.pub >> authorized_keys
Przesyłamy plik authorized_keys na serwer, lub prosimy admina aby umieścił klucz publiczny w katalogu ~/.ssh.
Można to wykonać za pomocą polecenia do kopiowania w protokole SSH – scp.
np.:
scp ~/.ssh/authorized_keys szkolnylug@serwer.com:~/.ssh/
Od tej pory po zalogowaniu
i wpisaniu pierwszy raz hasła możemy zapomnieć o kolejnym wpisywaniu haseł aby dostać się na nasze konto.
Tworzenie kluczy DSA i RSA
Jeszcze raz powtórzę spoby generowania kluczy. Jak pisałem aby wygenerować klucz należy użyć polecenia ssh-keygen. Aby wygenerować parę kluczy obsługiwane przez SSH1 trzeba utworzyć klucze algorymem RSA, SSH2 akceptuje algorytmy RSA i DSA.
Generowanie kluczy:
ssh-keygen -t rsa
lub
ssh-keygen -t dsa
Zmiana hasła klucza publicznego
Jeśli chcemy zmienić hasło chroniące klucz prywatny (passphrase) należy użyć polecenia ssh-keygen z parametrami:
sh-keygen -p -f ~/.ssh/id_rsa
Kopiowanie plików w trybie interaktywnym, polega na tym, że nie logujemy się na serwerze a jedyne co robimy to kopiujemy plik o określonej ścieżce z serwera na komputer stacjonarny.
Kopiowanie plików za pomocą SCP
Można użyć do tego wspomnianego: scp ale także szyfrowanego przesyłu FTP → sFTP
Rozważmy 2 sytuacje: 1. kopiowanie na serwer i 2. kopiowanie z serwera
>ad 1. scp ~/Pulpit/stona_www/index.html szkolnylug@serwer.com:/var/www/strona_www/
>ad 2. scp szkolnylug@serwer.com:/var/www/strona_www/index.html ~/Pulpit/stona_www/
Ciekawe opcje SCP:
-a włączanie statystyk dla każdego pliku
-A wyłączanie statystyk dla każdego pliku
-C włącza kompresję
-r kopiuje rekursywnie całe katalogi
-v tryb verbose – dodatkowych komunikatów
Kopiowanie katalogów przy pomocy SCP
scp -r ~/Pulpit/stona_www/ szkolnylug@serwer.com:/var/www/
Kopiowanie za pomocą sFTP
Za pomocą sftp możemy podobnie korzystać jak w przypadku scp.
Przykład użycia:
szkolnylug@szkolnylug-desktop:~$ sftp szkolnylug@serwer.com.pl:plik.txt
Connecting to serwer.com...
Fetching /home/szkolnylug/plik.txt to plik.txt
Za pomocą SSH można utworzyć szyfrowany tunel, za pomocą którego można przesyłać dane, odbierać pocztę itp.
Jak to zrobić? Będziecie musieli troszeczkę poczekać na następny artykuł.
- Zaloguj się lub utwórz konto, by odpowiadać
