saved from url= http://www.it-faq.pl/EditModule.aspx?tabid=583&mid=1253&def=Cs_ITSCS_CMS_Articles_View&ArticleID=1395


 
  
     

SSH w środowisku Windows

Date: 20-06-2004
Author: Grzegorz Niemirowski
Number of Views: 2729
Rate: 2.22



 

Grzegorz Niemirowski

g.niemirowski@it-faq.pl

 
  Interesuje się bezpieczeństwem i administracją systemów informatycznych. Rozwija program OE Firewall eliminujący błędy i rozszerzający możliwości Outlook Express. Najchętniej programuje w Visual Basicu. Zajmuje się też projektowaniem i budową układów elektronicznych.  
 
 

Instalacja, konfiguracja i podstawy pracy z SSH w środowisku MS Windows

SSH w środowisku Windows



SSH jest protokołem kryptograficznym umożliwiającym zdalną pracę na komputerze. Dzięki silnemu szyfrowaniu uniemożliwia podsłuch przesyłanych danych i ich modyfikację. Zabezpiecza przed atakami IP i DNS spoofing i IP source routing. Umożliwia też tunelowanie innych protokołów, w tym tych, które same z siebie nie są bezpieczne, jak np. SMTP, POP3, FTP. Obecnie w użyciu jest wersja 2, która zastąpiła mniej bezpieczną wersję SSH1.


OpenSSH Jednym z najbardziej znanych serwerów SSH jest OpenSSH. Jego strona domowa to http://www.openssh.org/. Wersję dla Windows możemy ściągnąć ze strony http://lexa.mckenna.edu/sshwindows/. Należy pamiętać, że OpenSSH stworzono dla OpenBSD, a następnie rozwijano z myślą o systemach uniksowych. Wersja dla MS Windows to tak naprawdę tzw. wersja portable działająca pod kontrolą środowiska Cygwin okrojonego do niezbędnych bibliotek. W artykule opisano wersję o numerze 3.7.1p1-1.


Instalacja pakietu Po rozpakowaniu pliku zip należy uruchomić właściwy plik instalatora. Do wyboru mamy instalację serwera i klientów. Najlepiej wybrać wszystko, jednak na Windows 9x/Me instalacja serwera nie jest możliwa.
 
Rys. 1: Import grup i kont do plików konfiguracyjnych

 
 
Gdy instalator zakończy pracę, konieczne jest dodanie wpisów do plików passwd i group, które znajdują się w podkatalogu etc, w katalogu, w którym zainstalowaliśmy OpenSSH. Bez tych wpisów nie będzie się można zalogować. Należy uruchomić konsolę i przejść do podfolderu bin, który jest w folderze serwera OpenSSH. Najpierw tworzymy plik group poleceniem:mkgroup -l >> ..\etc\group
Dla grup domenowych używamy po-lecenia:mkgroup -d >> ..\etc\group Następnie do pliku passwd wstawiamy wpisy użytkowników, którzy będą mieli prawo do logowania się przez SSH. Można użyć polecenia:mkpasswd -l >> ..\etc\passwd dla importu wszystkich kont. Jednak nie jest to zalecane ze względów bezpie-czeństwa. Lepiej dodać po kolei tylko tych użytkowników, którym chcemy dać prawo do logowania się. Służy do tego dodatkowy parametr -u, np.: mkpasswd -l -u kowalski >> ..\etc\passwd Przykład opisanej procedury widać na rysunku 1. W celu zaimportowania kont domenowych należy użyć przełącznika -d zamiast -l.
Po imporcie kont warto sprawdzić np. notatnikiem, czy w pliku passwd jest wszystko w porządku, oraz ustawić katalogi domowe użytkowników i powłokę. Ścieżka katalogu domowego jest umieszczona na przedostatniej pozycji we wpisie. Jeśli chcemy wpisać ścieżkę bezwzględną zamiast względnej w stosunku do foldera serwera OpenSSH, należy rozpocząć ją od /cygdrive/. Poza tym tak jak w GNU/Linuksie używamy zwykłych ukośników (znaków slash /) zamiast odwróconych (backslash \). Nie używamy dwukropka przy literze dysku, bo dwukropek oddziela pola we wpisie użytkownika. Ostatnie pole oznacza powłokę (shell) użytkownika. Przykładowy wpis może wyglądać tak:
Grzegorz:unused_by_nt/2000/xp:1003:513:Grze-gorz,U-NEO\Grzegorz,S-1-5-21-1708537768-1580818891-2146866163-1003:/cygdrive/C/Documents And Settings/Grzegorz/Moje doku-menty:/ssh/quietcmd.bat
Teraz można uruchomić serwer SSH poleceniem: net start "OpenSSH Server" lub korzystając z konsoli Usługi w Narzędziach administracyjnych w Panelu sterowania. Możemy teraz dokonać próby logowania na serwer, np. na swoje własne konto.


Połączenie z serwerem Jeśli wybraliśmy instalację klientów, możemy w wierszu poleceń skorzystać z komendy:
ssh localhost
Klient będzie się próbował zalogować na konto bieżącego użytkownika.
W tym momencie klucz publiczny serwera nie jest jeszcze znany klientowi, więc zostanie wyświetlony komunikat:
The authenticity of host ?localhost (127.0.0.1)' ca-n't be established.
Równocześnie dostajemy pytanie, czy chcemy kontynuować połączenie. Po twierdzącej odpowiedzi i uwierzytelnieniu otrzymujemy dostęp do powłoki. Możemy wydawać polecenia, wykonywać operacje na plikach, uruchamiać programy. Jeśli w przyszłości dostaniemy komunikat o nieznanym kluczu serwera, a nie był on zmieniany, będzie to oznaczać, że ktoś podszywa się pod serwer. Połączenie kończymy poleceniem:
 
Rys. 2: Logowanie ze zdalnego komputera

 
 
exit
Jeśli chcemy się zalogować na inne konto, używamy polecenia:
ssh nazwaużytkownika@adresserwera
lub
ssh -l nazwaużytkownika adresserwera
Jako nazwę użytkownika podajemy nazwę konta, na które chcemy się zalogować, a jako adresserwera jego adres IP lub domenowy. W przypadku, gdy jest to ten sam komputer, możemy użyć adresu localhost lub adresu IP 127.0.0.1 Jeśli logowanie przebiegło bez problemów, możemy spróbować zalogować się z innego komputera. Na rysunku 2 widać jak przebiega logowanie ze zdalnego komputera z systemem Windows 98, na serwer OpenSSH, pracujący pod Windows XP.
Dzięki serwerowi SSH, będziemy mogli zdalnie pracować na maszynie, na której jest on zainstalowany. Wygląda to prawie tak samo, jak praca na systemie lokalnym. Możemy uruchamiać programy oraz komendy systemowe, wykonywać operacje na plikach itd. Oczywiście wszystko to odbywa się w trybie tekstowym. Jeśli ktoś wcześniej używał telnetu, SSH nie będzie dla niego nowością. Zdalna praca przez SSH jest podobna, jednak nieporównywalnie bezpieczniejsza.
 
Rys. 4: Ściąganie pliku przez SCP

 
 



Forwardowanie portów Jak zestawić takie połączenie? Najpierw należy uruchomić tunel. W tym celu za pomocą klienta SSH nawiązujemy połączenie z serwerem SSH, musimy jednak przekazać mu dodatkowe parametry dotyczące tunelu. Używamy do tego parametru -L. Załóżmy, że chcemy tunelować połączenia do serwera pocztowego pop3.poczta.onet.pl i wykorzystamy do tego lokalny port 110. Przykładowe polecenie będzie wyglądać tak:ssh -L 110:pop3.poczta.onet.pl:110 Grzegorz@192.168.0.1."Grzegorz" to przykładowe konto na które odbywa się logowanie, 192.168.0.1 to adres IP komputera, na którym uruchomiony jest serwer SSH. Po zalogowaniu się dostajemy dostęp do wiersza poleceń, analogicznie, jak to było wcześniej. Dodatkowo na komputerze, z którego zostało wydane to polecenie zostanie otwarty port 110. Połączenia przychodzące na ten port zostaną zaszyfrowane, przesłane do komputera o adresie 192.168.0.1, działający na nim serwer SSH odszyfruje je i przekaże do serwera pocztowego pop3.poczta.onet.pl. W ten sposób pomiędzy maszyną, na której uruchomiony jest klient SSH, a tą, na której jest uruchomiony serwer, połączenie będzie szyfrowane; dane będą nieczytelne i bezużyteczne dla innych użytkowników
 
Rys. 5: Generowanie klucza z linii komend

 
 
sieci lokalnej, którzy by je ewentualnie przechwycili. Tunel będzie tak długo istniał, jak długo będziemy zalogowani. Pozostaje jeszcze sprawa, co zrobić, aby Outlook, albo inny klient poczty korzystał z naszego tunelu. Należy zmienić ustawienia serwera POP3. Normalnie program łączy się z serwerem pop3.poczta.onet.pl na porcie 110. Jeśli ma korzystać z tunelu, musi się łączyć z komputerem, na którym uruchomiony jest klient i na port podany przy logowaniu. W przykładzie program pocztowy i klient SSH działają na tym samym komputerze, jako serwer podajemy więc localhost.

Rating: 2,22
2 5 0 2 0

1

2

3

4

5

Number of ratings: 9

Comments
Add comment
Title: 
Name: 
Comment:

Save

Return


Copyright (c) Autorzy & IT SCS Sp. z o.o.
Powered by IT FAQ    Terms Of Use    Privacy Statement
Portal engine source code is copyright © 2002-2005 by DotNetNuke. All Rights Reserved