OpenSSH – Część 2: zastosowania protokołu 7


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



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

7 komentarzy do “OpenSSH – Część 2: zastosowania protokołu

  • WOj

    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.

  • thalcave Autor wpisu

    @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.

  • mq

    Do forwardowania Xów polecam opcję -Y zamiast -X. Jak podaje Manual page ssh(1):
    -X Enables X11 forwarding.
    -Y Enables trusted X11 forwarding.

  • cb1986ster

    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ą.