OpenSSH for Windows - czyli jak bezpiecznie łączyć się Windowsem

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.

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)

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)

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

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:

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).




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"

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.

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


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

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