Gazeta Internetowa

 

Secure Shell (SSH)

Wstęp

Coraz większą popularność w sieci zodbywają konta e-mailowe z dostępem do shell`a. Przyczyną jest oczywiście rozpowszechnienie się Linuxa :-), za pomocą którego można się nauczyć obsługiwać takie konto. Jednak dostęp do zdalnego komputera za pomocą zawartego w prawie każdym systemie operacyjnym telnetu często jest blokowany przez administratorów na rzecz ssh. Dlaczego ? Odpowiedź poniżej.

Dlaczego SSH ?

Istnieją dwa bardzo ważne argumenty wymownie przedstawiające wyższość secure shella nad telnetem.

Po pierwsze: jak sama nazwa wskazuje ssh jest bezpieczniejszy od swojego starszego kolegi gdyż umożliwia szyfrowanie całej transmisji. Jest to bardzo ważne, gdyż istnieje mnóstwo programów podsłuchujących sieć (snifferów), które potrafią przejąć hasło i dane przesyłane otwartym tekstem tak jak to robi telnet. Poza tym SSH pozwala się logować na serwer jako root, zabezpiecza przed hackerskimi atakami oraz usuwa niektóre luki w systemie bezpieczeństwa XWindow.

Drugą zaletą SSH jest automatyczne logowanie. Możemy dostać się na nasze konto w sieci bez podawania hasła. Identyfikacja odbywa się za pomocą dwóch kluczy - prywatnego oraz publicznego, który jest umieszczony na odległej maszynie. Jak to zrobić w dalszej części tekstu.

Inną zaletą SSH jest to, że potrafi on kompresować dane w "locie". Są one przesyłane (jeśli tak sobie zażyczymy), przez skompresowany kanał ssh przez co można skrócić czas pobierania plików, szczególnie tekstowych np. newsów.

Klienci i serwery SSH

Programów, za pomocą, których moglibyśmy się dostać na serwer ssh jest całe mnóstwo i zapewne istnieją dla wszystkich systemów jednak nie zostały tak upowszechnione jak telnet. O klienta ssh musimy się postarać. Tutaj zajmę się klientem ssh na linuxa. Można go ściągnąć z wielu ftp`ów, w tym i polskich np. ftp://task.gda.pl. Do nauki ssh warto także ściągnąć sobie serwer ssh i logować się na lokalny komputer oszczędzając przy tym pieniądze za połączenie z siecią. Zainstalujmy klienta ssh i serwer sshd, którego uruchomimy na naszym koputerze. Warto tutaj zaznaczyć, że serwery ssh istnieją tylko na platformy unixowe - w tym na Linuxa :-)

Pierwsze zalogowanie

Na serwer możemy się zalogować zwyczajnie, podając nasze hasło, robimy to wydając polecenie:

ssh login@nazwa.hosta

Jeśli logujemy się pierwszy raz na dany komputer ssh zapyta nas czy jesteśmy pewni, że chcemy się połączyć z tym serwerem. Komputer ten zostanie automatyczine dodany do listy naszych serwerów. Potem zostaniemy zapytani o nasze hasło, które oczywiście musimy wpisać. Po chwili jesteśmy na koncie !

Połączenie zamykamy poleceniem exit.

Generowanie kluczy

Możemy zmusić ssh, aby logowanie na zdalny komputer odbywało się bez podawania haseł, za pomocą porównywania dwóch kluczy RSA - prywatnego i publicznego. Musimy je wygenerować poleceniem:

ssh-keygen

program utworzy klucze: prywatny, który jest tylko nasz i nie powinniśmy go nikomu pokazywać czy udostępniać oraz publiczny, który umieścimy na zdalnym serwerze. Następnie program zapyta o nazwy pod jakimi ma zapisać wygenerowany klucz. Naciśnijmy ENTER, gdyż nazwa identity nam pasuje i nie będzie wprowadzała zamieszania. Dalej program zapyta się o passphrase. Jeśli naprawdę nie chcemy podawać hasła naciśnijmy ENTER i pozostawmy to pole puste. Ma to jednak jedną wadę: jeśli ktoś włamie się na jedno z naszych kont bez problemu dostanie się też na drugie !

Po wpisaniu (bądź nie) passphrase`a wyświelą nam się nazwy naszych kluczy oraz zawartość klucza publicznego.

Klucz publiczny na serwer !

Teraz musimy skopiować nasz klucz publiczny (identity.pub) na serwer gdzie mamy konto. Najłatwiej jest to zrobić za pomocą ftp. Przegrywamy identity.pub znajdujący się w katalogu ~/.ssh (~ oznacza nasz katalog domowy np. /home/artur) do takiego samego katalogu, ale na odległym serwerze. Plik ten powinnien nosić nazwę authorized_keys, więc możemy go od razu skopiować pod taką nazwą, bądź jeśli skopiowaliśmy go jako identity.pub zmienić go na authorize_keys.

cat identity.pub >> authorized_keys

Teraz możemy już się zalogować na konto bez podawania hasła:

ssh login@nazwa.komputera

UWAGA: Jeśli coś nie gra, to zapewne masz problem, albo ze złą nazwą plików w katalogu ./ssh, albo masz niewłaściwe prawa dostępu do tych plików. Do ich czytania i zapisywania powinnien mieć prawo tylko właściciel dlatego ustawmy im chmod na 600.

chmod 600 .ssh/*

Tips and Tricks

Jeżeli chcemy skopiować plik znajdujący się na naszym koncie na odległym derwerze wystarczy, że skorzystamy z polecenia scp o następującej składni:

scp login@komputer:/ścieżka/do/pliku /ścieżka/lokalna

Jeśli nazwa użytkownika na odległym serwerze jest taka sama jak na komputerze lokalnym wystarczy do zalogowania wpisać:

ssh nazwa.komputera

Jak już wspomniałem wcześniej SSH potrafi kompresować transmisje. Służy do tego opcja -C.

ssh -C login@nazwa.komputera

Artur Pęczak

30.03.2000 12:00

Arturoza@send.pl

[spis treści]


Nie masz możliwości wysłania e-maila ? Skorzystaj z serwisu 'szybki e-mail' na stronie WWW Gazety Internetowej ! www.gazeta.sky.pl/mailer.htm