Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

SSH


      Piotr Karpiuk

Wstęp

ssh user@host 
loguje się na UNIXowe konto user na komputerze host; wymaga zainstalowanego lokalnie klienta SSH i serwera SSH zdalnie (zwykle na porcie 22). Po zalogowaniu możemy wykonywać polecenia shella na zdalnym komputerze (kończymy pracę np. poleceniem exit)

Implementacja klienta SSH pod Windowsy to np. PuTTY.

Przydatne opcje

-C 
włącza kompresję – warto dla wolnych połączeń
-c blowfish 
włącza znacznie szybszy niż domyślny (choć nieco słabszy) algorytm szyfrowania – warto dla połączenia ze słabszym obliczeniowo sprzętem
-X 
włącza forwardowanie Xów, dzięki czemu po połączeniu ze zdalnym serwerem UNIXa można będzie na nim wykonywać aplikacje z GUI a okienka będą się wyświetlać lokalnie (jeśli łączymy się z Cygwina, wówczas zamiast -X warto podać opcję -Y).
-p port 
gdy serwer SSH działa na innym porcie niż domyślny (22)

Potoki

tar -czf – /var/www * | ssh jas@bolek ‚cat > ~/backup/backup_www.tar.gz’ 
pakuje zawartość katalogu /var/www na lokalnym komputerze i wysyła ją (przez pipe’a) na zdalny komputer do pliku backup_www.tar.gz

Tunele

ssh -R 2222:localhost:22 remotehost 
tworzy tunel łączący lokalny (istniejący) serwer na porcie 22 z portem 2222 na zdalnym komputerze `remotehost` (do tej pory na porcie 2222 komputera `remotehost` nie mogło nic być, a teraz będzie wyjście z tunelu)
ssh -L 2222:localhost:22 remotehost 
tworzy tunel łączący zdalny (istniejący) serwer na porcie 22 komputera remotehost z portem 2222 na lokalnym komputerze (do tej pory na porcie 2222 komputera lokalnego nie mogło nic być, a teraz będzie wyjście z tunelu). Niektóre wersje ssh pozwalają powiedzieć tak: ssh -L <ip_interfejsu>:2222:localhost:22 – co pozwala dostać się do tunelu z jeszcze innego (trzeciego) komputera.
ssh -g -L110:mailhost:110 -L25:mailhost:25 user@mailhost 
przekierowanie kilku portów TCP naraz za pomocą SSH; opcja -g udostępnia lokalny port innym komputerom
ssh -L5150:intranet.insider.nocat:80 gateway.nocat.net 
przekierowuje lokalny port 5150 komputera na serwer WWW wewnętrznej sieci widocznej poprzez ruter gateway.nocat.net; adres intranet.insider.nocat nie musi być rozpoznawany przez serwery DNS, ponieważ nie jest on wykorzystywany do czasu nawiązania połączenia z gateway.nocat.net

Wyobraźmy sobie sytuację, gdzie komputery Danuta i Jan znajdują się w różnych sieciach za różnymi firewallami, mają adresy lokalne niewidoczne z zewnątrz (maskarada), Jan ma serwer SSH a Danuta chce z niego skorzystać. Danuta i Jan nie mają dostępu do SSH firewalli w swoich sieciach. Niech Marek będzie komputerem z publicznym IP dostępnym gdzieś w internecie, na którym zarówno Danuta jak i Jan mają swoje konta.

Danuta pisze: ssh -L 2223:localhost:2222 marek.

Jan wykonuje u siebie: ssh -R 2222:localhost:22 marek.

Danuta ostatecznie zestawia połączenie: ssh -p 2223 localhost łącząc się z serwerem SSH Jana, a administratorom sieci Jana i Danuty w zasadzie nic do tego.

SOCKS

ssh -D 8080 remotehost 
tworzy na lokalnym komputerze na porcie 8080 internetowe proxy SOCK4; to proste polecenie tuneluje nasz niezabezpieczony i niezaszyfrowany ruch WWW z dala od niezaufanych sieci do maszyny remotehost w zaufanej sieci; aby surfować w sieci WWW należy przejść do ustawień proxy dla naszej przeglądarki WWW, znaleźć pole do którego wpisuje się nazwę proxy SOCKS oraz numer portu (jako nazwę należy podać `localhost` a jako numer portu 8080)

Logowanie za pomocą kluczy (bez hasła)

Jeśli wygenerujemy sobie klucze: prywatny i publiczny, po czym prześlemy publiczny na serwer, to będziemy mogli logować się przez SSH bez podawania hasła (ma to również znaczenie gdy chcemy w skrypcie shella wykonać zdalne polecenie przez SSH).

W pliku /etc/ssh/sshd_config należy ustawić wartość yes dla wpisów RSAAuthentication i PubkeyAuthentication (zwykle ustawione).

Generujemy sobie klucze:

 ssh-keygen -t dsa -b 2048

(podajemy puste hasło).

Wygenerowany klucz publiczny ~/.ssh/id_dsa.pub należy przesłać na serwer i umieścić w pliku ~/.ssh/authorized_keys (dołączyć do pliku lub utworzyć ten plik) – możemy to uczynić bardziej elegancko poleceniem

 ssh-copy-id remote_host

Kopiowanie plików

scp -r jas@bolek:/etc/ . 
kopiuje katalog /etc (z podkatalogami!) na zdalnym komputerze do bieżącego katalogu na komputerze lokalnym
sftp jas@bolek 
otwiera interaktywną, bezpieczną sesje FTP pozwalającą na przesyłanie plików (nie wymaga oprogramowania FTP po stronie serwera ani klienta, wystarczy oprogramowanie SSH)

Jeśli ktoś lubi klikanie w okienkach, może do bezpiecznego kopiowania plików użyć programów gftp (Linux) lub WinSCP (Windows), albo użyć:

sshfs jas@bolek:katalog_zdalny katalog_lokalny 
montuje zdalny katalog w lokalnym – od tej pory zdalny katalog jest dostępny lokalnie w menedżerze plików tak jak wszystkie katalogi lokalne
SSH, 5.0 out of 5 based on 1 rating
Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>