Zabawy z SSH

Sieci, Bezpieczeństwo, Linux No Comments »

Ostatnio dość często w pracy wykonuję kopie zapasowe oraz automatyzację zadań. Troszkę swoich doświadczeń postanowiłem przerzucić na bloga ;) Przed przystąpieniem do lektury dalszej części polecam zapoznać się z wcześniejszymi notkami związanymi z SSH:

Więc zaczynamy:

$ scp plik.txt user@serwer.com:~/
- polecenie skopiuje bezpiecznie plik.txt na serwer.com do katalogu domowego użytkownika user

Oczywiście nic nie stoi na przeszkodzie by ściągnąć jakiś plik przez scp ze zdalnego serwera:

$ scp user@serwer.com:~/plik.txt .
- polecenie skopiuje bezpiecznie plik.txt znajdujący się na serwerze serwer.com w katalogu domowym użytkownika user

Polecam zapoznać się z manualem scp. Z jego ciekawszych opcji
-r Kopiuje całe katalogi (rekurencyjnie).
-l limit limit transferu danych w Kb/s.

No tak ale kopiowanie katalogów przez scp trwa troszkę długo. O wiele szybciej kopię katalogu możemy zrobić następująco

tar cpf - ./* | gzip | ssh user@domena.pl ‘cd ~/; \
cat - > kopia_katalogu-$(date “+%d.%m.%y-%H:%M”.tar.gz)’

Tym poleceniem zrobimy kopie katalogu, spakujemy ja gzip-em, prześlemy do serwera zdalnego do katalogu głównego i wrzucimy do pliku kopia_katalogu-{bierzaca-data}. Sposób dość szybki. Oczywiście nic nie stoi na przeszkodzie byśmy robili np. mirror katalogu na drugi serwer. Wtedy wklepujemy:

tar cpf - ./* | ssh user@domena.pl ‘cd /home/user/mirror; tar xf -’

Mam nadzieję, że podrzuciłem parę pomysłów i pobudziłem do dalszego testowania ;)

Połączenia VNC w tunelu SSH

Sieci, Bezpieczeństwo, Linux 2 Comments »

Od czasu kiedy poznałem VNC (Virtual Network Computing) czyli system przekazywania ekranu ze zdalnego środowiska graficznego, moja praca stała się o wiele przyjemniejsza. Nie musiałem marnować czasu na dojazdy czy bieganie pomiędzy piętrami. Wystarczyło zainstalować serwery VNC u klientów i większość rzeczy mogłem wykonać ze swojego komputera.
Strona domowa VNC to www.realvnc.com
Wszystko sprawuje się dobrze o ile jesteśmy w tej samej sieci lub komputery klienckie mają publiczne adresy IP. Jednak co gdy musimy połączyć się do klienta znajdującego się za NAT-em?

schemat

Otóż z pomocą przychodzą nam tunele ssh. Wystarczy, że będziemy posiadali konto na routerze wykonującym NAT. W naszym przykładzie testowy.com. Więc jak wykonać takie połączenie? Załóżmy, że chcemy połączyć się z laptopa do klienta o adresie ip 192.168.1.5. W laptopie wpisujemy więc komendę:

$ ssh -L 3333:192.168.1.5:5900 user@testowy.com

I zatwierdzamy enterem. Zostaniemy poproszeni o podanie hasła do konta user, po czym tunel zostanie ustanowiony. No tak ale co to oznacza? Po oplcji L podajemy port_lokany:ip_hosta:port_hosta następnie login i nazwę/IP routera. Teraz możemy połączyć się z naszym hostem odwołując się do locahlosta na porcie 3333. Czyli w VNC w polu hosta wpisujemy localhost:3333. Tunel zajmie się resztą. Można pójść dalej i od razu ustawić klika przekierowań:

$ ssh -L 3333:192.168.1.5:5900 -L 3334:192.168.1.34:5900 -L 3335:192.168.1.95:5900 user@testowy.com

Po takiej operacji odwołując się po kolei do:

  • localhost:3333 - otrzymamy połączenie z komputerem 192.168.1.5
  • localhost:3334 - otrzymamy połączenie z komputerem 192.168.1.34
  • localhost:3335 - otrzymamy połączenie z komputerem 192.168.1.95

Tego typu tunele można wykorzystywać także do innych celów, a możliwości jest naprawdę wiele np połączenie ze zdalnym pulpitem Windows za pomocą programu rdesktop. Wystarczy zmienić port docelowy na 3389.

Życzę przyjemnego kopania tuneli ;)

SSH bez hasła

Sieci, Bezpieczeństwo, Linux 1 Comment »

Często loguje się na różne serwery i wpisywanie hasła jest męczące a przy automatyzacji zadań często nie możliwe. Pozostawienie logowania bez zabezpieczenia oczywiście nie wchodzi w grę ;). Na szczęście z pomocą przychodzi nam uwierzytelnianie za pomocą kluczy - prywatnego i publicznego. Więc do dzieła.
By wygenerować klucze wydajemy w naszym systemie polecenie ssh-keygen -t rsa

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

Gdy skrypt generujący zapyta nas o hasło, wciskamy enter. Zostanie wtedy utworzony klucz bez hasła. Jak widać w wyniku tego polecenia zostały wygenerowane dwa klucze, jeden w pliku id_rsa (klucz prywatny który należy chronić i nikomu nie udostępniać), oraz id_rsa.pub(klucz publiczny).
Pozostało nam tylko wysłanie klucza publicznego do serwera na konto do którego chcemy się logować bez hasła. Wydajemy więc polecenie:

$ scp ~/.ssh/id_rsa.pub user@serwer:~/

Następnie logujemy się do zdalnej maszyny i umieszczamy klucz publiczny w ~/.ssh/authorized_keys

$ ssh user@serwer
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Od tej chwili przy logowaniu na tą maszynie nie będziemy pytanie o hasło, a zostaniemy uwierzytelnieni na podstawie klucza.
Nie powinno stosować się tej techniki do logowania na konta uprzywilejowane.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS
Pozycjonowanie stron - pisanie prac - Sklepy Internetowe - Ranking - Aparat Nikon D80 - studio fotograficzne - Żłobki - Karnisze Kraków - muzyka techno - tworzywa sztuczne - Wakacje Indie