Artykuł jako drugi z cyklu (patrz część 1) omawiać będzie zastosowania protokołu OpenSSH – zaczynając od tych prostszych, kończąc na tych bardziej zaawansowanych.
W Debianie i dystrybucjach pochodnych (a więc i Ubuntu) aby korzystać z systemu jako klient SSH musi być zainstalowana paczka openssh-client.
Na użytek artykułu posłużę się fikcyjnym kontem thalcave@ubuntu.pl
Połączenie zdalne
Połączenie zdalne, główne zadanie protokołu SSH, nawiązujemy korzystając z komendy ssh:
ssh thalcave@ubuntu.pl
Następnie, po poprawnie wprowadzonym haśle, zostaniemy zalogowani na zdalnym hoście. Będziemy mogli pracować jak na zwykłym terminalu komputera lokalnego. Czasami przydatna jest możliwość używania ssh interaktywnie:
ssh thalcave@ubuntu.pl 'komenda'
Taka postać może być wykorzystywana w skryptach. Czasami administratorzy serwerów, celem zwiększenia bezpieczeństwa, zmieniają domyślny port nasłuchu serwera. Jest to tylko drobna przeszkoda, którą łatwo włamywaczowi przejść. Natomiast użytkownik oprócz zapamiętania loginu i hasła (oczywiście losowo generowanego) musi pamiętać także port, po którym może połączyć się z maszyną. Aby nakazać łączenie po danym porcie musimy użyć opcji -p port. Jednak zmiana portu usługi uważa się za rozwiązanie nieeleganckie.
Bezpieczne kopiowanie
Protokół OpenSSH umożliwia szyfrowane kopiowanie między komputerami – narzędziem umożliwiającym to jest scp, którego składnia jest analogiczna do polecenia cp:
scp źródło cel
Pamiętajmy, że ścieżkę dostępu do plików na zdalnej maszynie musimy poprzedzić identyfikacją komputera w postaci login@adres-serwera:, zatem by skopiować konfigurację powłoki Bash użyjemy polecenia:
scp ~/.bashrc thalcave@ubuntu.pl:~/
Lub krócej, pomijając ~/ (lokalizacja katalogu domowego jest domyślna):
scp ~/.bashrc thalcave@ubuntu.pl:
Zwróćmy uwagę na znak dwukropka zaraz po podaniu adresu serwera. Jest on wymagany, bez niego komenda zadziałałaby jak zwykłe polecenie cp. Za zmianę portu połączenia odpowiada opcja -P port (wielkie „P”, w przeciwieństwie do małego z polecenia ssh). Bardzo przydaje się też -r włączająca tzw. rekursywne kopiowanie – kopiowanie całych drzew katalogów.
Szyfrowane FTP
Podążając dalej śladem scp otrzymujemy narzędzie sftp będące szyfrowaną analogią protokołu FTP.
Aby skorzystać z dobrodziejstw narzędzia sftp w konfiguracji serwera musi być włączona odpowiednia opcja, o czym napiszę w kolejnych częściach cyklu.
Program wywołuje wewnętrzną powłokę do poleceń wewnętrznych. Jej wywołanie następuje przy użyciu polecenia:
sftp thalcave@ubuntu.pl
Lista najistotniejszych poleceń:
- cd – zmiana bieżącego katalogu na zdalnym hoście,
- lcd – zmiana bieżącego katalogu na lokalnym hoście,
- ls – wyświetlenie zawartości danego katalogu na zdalnym hoście,
- lls – wyświetlenie zawartości danego katalogu na lokalnym hoście,
- pwd – wyświetlenie bieżącego katalogu na zdalnym hoście,
- lpwd – wyświetlenie bieżącego katalogu na lokalnym hoście,
- help – pomoc, wyświetlenie informacji o możliwych komendach,
- put – wysłanie pliku (plików) na serwer,
- get – pobranie pliku (plików) z serwera,
- rm – usunięcie pliku z serwera,
- rmdir – usunięcie pustego katalogu z serwera,
- exit – wyjście z programu.
Warto zaznaczyć, że przy korzystaniu z sftp nie musimy korzystać z rozszerzonych poleceń mput oraz mget – podstawowe wersje poleceń potrafią obsługiwać wiele plików naraz.
Forwardowanie portów
Forwardowanie portów, czyli przekierowywanie portów, to nic innego jak sposób przesłania wszystkich danych z danego portu jednego komputera na inny port drugiego komputera.
Jeśli chcemy odbierać na lokalnym porcie wszystko, co jest na danym porcie zdalnego hosta, zastosujemy:
ssh -L 7000:localhost:80 thalcave@ubuntu.pl
Co pozwoli odbierać na lokalnym porcie 7000 wszystko z ubuntu.pl z portu 80 (czyli stronę www).
W drugą stronę, jeśli chcemy udostępnić swoją stronę www na komputerze lokalnym hostowi ubuntu.pl na porcie 7000 skorzystamy z polecenia:
ssh -R 7000:localhost:80 thalcave@ubuntu.pl
Przekierowywanie portów zwiększa bezpieczeństwo usług, które nie opierają się na szyfrowaniu.
Forwardowanie X11
Tak zwane „forwardowanie Xów” to nic innego jak umożliwienie uruchamiania programów wymagających serwera X (trybu graficznego) z komputera zdalnego na lokalnym. Oprócz odpowiedniej konfiguracji serwera i zainstalowanych na nim programów z GUI musimy zalogować się zdalnie z opcją -X przy włączonym serwerze X (np. logując się z Xterminala).
Przykład logowania:
ssh -X thalcave@ubuntu.pl
W tak otwartej sesji możemy uruchamiać prawie wszystkie programy potrzebujące serwera X – nie udało mi się jedynie odpalić w taki sposób Tvtime’a.
W następnym artykule opiszę programy, które ułatwiają korzystanie z SSH, a także metodę bezpiecznego logowania bez podawania hasła.
Autorzy: Dorota Dawczyk i Mateusz Chynowski
Na podstawie: Protokoły SSH i OpenSSH i ataki na nie
Zaczyna robić się ciekawie 😉 Ja używam ssh głównie do uaktualniania systemu dziecka z drugiego pokoju i doinstalowywania softu 😉
Przyjemny artykuł 🙂
Co do zmiany portu serwera SSH – ja osobiście polecam takie rozwiązanie. Wiadomo, że nie zapewnia ono jakiegoś super bezpieczeństwa, bo łatwo „odgadnąć” nowy port, ale działa to dobrze w obronie przed wszelkimi botami, próbującymi się logować na serwer – dzięki zmianie portów, od razu blokujemy takie próby. Ponadto, używając aliasów w konfiguracji klienta ssh nie musimy przejmować się pamiętaniem portu czy wpisywaniem za każdym razem – p xxxx.
@WOj Niby racja, ale jeśli użytkownik loguje się z przypadkowych komputerów to zapamiętanie adresu, loginu (to nie powinno sprawić mu problemu :P) i hasła to musi pamiętać jeszcze jakiś durny port. Wolę by użytkownicy korzystali z haseł niesłownikowych.
Do forwardowania Xów polecam opcję -Y zamiast -X. Jak podaje Manual page ssh(1):
-X Enables X11 forwarding.
-Y Enables trusted X11 forwarding.
Co do wykonywania poleceń to warto dodać jeszcze opcje -t i -T. Odpowiednio -t wymusza podłączenia do wirtualnej konsoli dzięki czemu możemy poprawnie uruchomić niektóre programy podając je jako parametr( nie dotyczy uruchamiania programów po normalnym zalogowaniu ), przykład:
ssh root@host „vim plik” // Vim zasygnalizuje że wyjście nie jest terminalem, poza tym nie będzie w stanie normalnie działać, ale:
ssh -t root@host „vim plik” // Dzięki -t wszystko jest OK
Natomiast -T może przydać nam się w czasie gdy chcemy przekazywać porty, ale nie chcemy uruchamiać powłoki.
ssh -D 8080 -T centrum.local // Polecenie działa jak serwer SOCKS, dzięki temu możemy np. ustawiając odpowiednio parametry przeglądarki, ominąć firewall lub bezpiecznie połączyć się z jakąś siecią wewnętrzną.
Pingback: OpenSSH – działanie historia i zastosowanie | Czaro Personal Site
Pingback: Instalacja i konfiguracja serwerów SSH i SFTP | Dydaktyka Władysław Czaja