Marcin Mazureknarzędzia online · artykuły · księgarniaRSS

OpenSSH for Windows - bezpieczne połączenie

1. Instalacja i konfiguracja.
2. Pierwsze uruchomienie.
3. Łączymy się przez ssh.
4. Problemy z logowaniem
5. Tworzymy tunel ssh.

Wszystkie informacje zawarte w tekście były sprawdzone i są używane przeze mnie, jednakże nie biorę odpowiedzialności za szkody wynikłe z nie właściwego wykorzystania poniższych wskazówek.

1. Instalacja oprogramowania i konfiguracja.

Instalujemy oprogramowanie OpenSSH for Windows, w chwili pisania tego tekstu najnowszą wersją była wersja 3.8.1p1-1 (http://www.openssh.com). Podczas instalacji instalujemy wersję serwer (jeżeli chcemy z tym komputerem łączyć się z zewnątrz) lub client (gdy chcemy z tego komputera łączyć się z innym komputerem) albo obie wersje.

Instalator OpenSSH for Windows 3.8.1p1-1, wybór komponentów: Client, Server, Shared Tools

Zakładam że instalujemy w domyślnej lokalizacji tzn. C:\Program Files\OpenSSH.
Pod koniec instalacji ukaże nam się komunikat który informuje nas że zanim uruchomimy serwer ssh powinniśmy z edytować plik C:\Program Files\OpenSSH\etc\passwd - co też później zrobimy.
Po zakończeniu instalacji uruchamiamy linie poleceń CMD, następnie przechodzimy do katalogu z zainstalowanym programem "cd C:\Program Files\OpenSSH\bin".
W lini poleceń wpisujemy komendę mkgroup aby dodać grupy użytkowników systemu.

>mkgroup -l >> ..\etc\group (jeśli chcemy dodać lokalne grupy użytkowników)
>mkgroup -d >> ..\etc\group (jeśli chcemy dodać domenowe grupy użytkowników)

Wiersz poleceń Windows XP z wykonaną komendą mkgroup -l dopisującą grupy do etc\group

Jeśli wszystko przebiegło pomyślne to w pliku etc\group zostały zapisane grupy użytkowników.
W lini poleceń wpisujemy komendę mkpasswd aby dodać hasła wybranych użytkowników.

>mkpasswd -l -u nazwa_uzytkownika >> ..\etc\passwd (jeśli chcemy dodać hasło lokalnego użytkownika)
>mkpasswd -d -u nazwa_uzytkownika >> ..\etc\passwd (jeśli chcemy dodać hasło domenowego użytkownika)

Wiersz poleceń z komendą mkpasswd -d -u uzytkownik dopisującą konto do etc\passwd

Jeśli wszystko przebiegło pomyślne to w pliku etc\passwd zostały zapisane hasła wybranych użytkowników.
W katalogu \etc znajduje się plik banner.txt w którym wpisany jest tekst powitania ukazujący podczas połączenia z serwerem.
Plik ten możemy dowolnie edytować lecz nie jest to konieczne.
Więcej informacji na temat konfiguracji naszego serwer i klienta ssh możemy znaleźć w plikach readme.txt i innych plikach w katalogu \docs.

2. Pierwsze uruchomienie.

Zakładam że wszystkie etapy instalacyjne zostały wykonane pomyślne i możemy uruchomić nasz serwer.
W lini poleceń CMD, wpisujemy:
>net start opensshd

Komenda net start opensshd i komunikat o pomyślnym uruchomieniu usługi OpenSSH Server

Nasz serwer ssh już działa i od tej chwili możemy łączyć się z naszym serwerem z zewnątrz. Należy jednak pamiętać że serwer ssh nasłuchuje na porcie 22 TCP i powinien być on otwarty.
Konfiguracja standardowego firewalla w Windows XP - ustawienia portu ssh:

Okno Ustawienia usługi zapory Windows XP z otwartym portem 22 TCP dla serwer_ssh

3. Łączymy się z serwerem ssh.

W lini poleceń CMD, wpisujemy:
> ssh uzytkownik@serwer_ssh.domena.pl

gdzie:
uzytkownik - oznacza nazwę konta na zdalnym serwerze z którym się łączymy.
serwer_ssh.domena.pl - oznacza adres serwera z którym się łączymy (może to być adres IP).


Wiersz poleceń z komendą ssh uzytkownik@serwer_ssh.domena.pl nawiązującą połączenie

po podłączeniu do serwera zostaniemy poinformowani o kluczu RSA i dodaniu danego hosta do znanych hostów itd... i zapytani czy chcemy kontynuować. Potwierdzamy wpisując yes.
Następnie ukaże nam się tekst powitania i zachęta aby wpisać hasło. Po zatwierdzeniu hasła możemy zdalnie pracować na serwerze. Dostępną mamy tylko linie poleceń.

4. Problemy z logowaniem

A) Po podaniu hasła pokazuuje sie komunikat:
Could not create directory '/home/nazwa_konta/.ssh'.
Oznacza to że server ssh nie mógł utworzyć folderu .ssh w katalogu " /home/nazwa_konta/" gdzie
"/home" - oznacza standardowo katalog "Documents and Settings".
Najprawdopodobniej nie istniej w folderze "Documents and Settings" dany katalog.
Edycje tych ustawień możemy dokonać w pliku "..\etc\passwd"
Plik passwd otwarty w Notatniku z wpisem konta i ścieżką katalogu domowego /home/jkowalski
lub w
rejestrze zmieniając wartości w kluczach: "HKEY_LOCAL_MACHINE/SOFTWARE/Cygnus Solutions/Cygwin/mounts v2/" :
"/"
"/home"
"/usr/bin"
Przed dokonanie zmian w rejestrze należy zrobić backup.
Edytor rejestru, klucz Cygnus Solutions Cygwin mounts v2 /home z wartością Documents and Settings

B) Przy próbie połączenia pokazuje się komunikat:

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is

Ostrzeżenie ssh REMOTE HOST IDENTIFICATION HAS CHANGED z odciskiem klucza RSA w konsoli
Oznacza on że w pliku
"./ssh/know_hosts" znajduje się już wpis z tego komputera. Dzieje się tak gdy już wcześniej (gdy wcześniej łączono się z tego komputera i został wygenerowany klucz) został wygenerowany inny klucz. Server ssh odbiera to jako próbę ataku i nie zezwala na połączenie. Aby rozwiązać ten problem należy z edytować plik "./ssh/know_hosts" i usunąć wpis dotyczący danego komputera lub jeśli nie wiemy co usunąć to możemy skasować cały plik. Jednakże musimy się liczyć z tym że po skasowaniu pliku, ssh będzie musiał jeszcze raz wygenerować klucze do wszystkich połączeń.

5. Tworzymy tunel ssh.

Postaram się wyjaśnić jak połączyć się zdalnym pulpitem w Windows XP który pracuje na porcie 3389 na komputerem Windows Xp z zainstalowanym oprogramowaniem ssh server i otwartym portem TCP 22. Z informacji które posiadam usługa zdalny pulpit jest szyfrowana 128 bitowym kluczem, jednakże kolejne zabezpieczenia nie zaszkodzą. Utworzymy tunel ssh poprzez który będziemy nawiązywać połączenie z usługą zdalnego pulpitu na komputerze docelowym.

KOMPUTER 1
-zainstalowany ssh client
-aplikacja zdalny pulpit

Łączenie:
ssh -L 1000:localhost:3389 uzytkownik@serwer_ssh.domena.pl

--------------------->

KOMPUTER 2
(serwer_ssh.domena.pl)(Windows XP)
-otwarty port TCP 22
-usługa zdalny pulpit
-usługa ssh serwer

W lini poleceń CMD, wpisujemy:

>ssh -L 1000:localhost:3389 uzytkownik@serwer_ssh.domena.pl

Po połączenie serwer zażąda hasła. Po wpisaniu i zatwierdzeniu hasła tunel zostanie nawiązany i możemy z niego korzystać.
Według tego co wpisaliśmy podczas połączenia tunelem ssh transportujemy ruch portu 3389 hosta docelowego poprzez nasz komputer na porcie 1000. Więc połączenie z hostem zdalnym nasłuchującym na porcie 3389 będzie wyglądało tak: 127.0.0.1:1000 lub localhost:1000

Okno Podłączanie pulpitu zdalnego z adresem 127.0.0.1:1000 wskazującym wejście tunelu ssh

Jeżeli próba połączenia zdalnym pulpitem powiedzie się to znaczy wszystko jest w porządku, a jeżeli nie uda się połączyć to znaczy że tunel nie działa. W tunelu ssh cały ruch jest szyfrowany tak więc przesyłanie danych jest bezpieczne. Tunelowanie można również wykorzystać do transportowania innych usług np. VNC lub poczty email protokołami SMTP i POP3. Można wtedy być pewnym że nikt nie podejrzy naszych danych.

Autor: Marcin Mazurek 06.12.2004

Zobacz również