Jan 16
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 
Jun 23
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?

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 
Jun 19
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.