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 nauczyć się 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ć wygenerowy 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 serwerze wystarczy, że skorzystamy z polecenia scp o następującej
składni: