Użyj protokołu SSH, aby bezpiecznie korzystać z usługi Podłączanie pulpitu zdalnego do systemu Windows

Strona zaktualizowana :
Data utworzenia strony :

Środowisko pracy

Zdalne połączenie z systemem Windows
  • Okna 11
Zdalne połączenie z systemu Windows
  • Okna 10
OpenSSH
  • OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2

Warunki wstępne

Zdalne połączenie z systemem Windows
  • Windows 10 lub nowszy (wymagana wersja Pro lub inna). Nie dotyczy to jednak sytuacji, gdy OpenSSH można przygotować osobno.
  • Windows Server 2019 lub nowszy. Nie dotyczy to jednak sytuacji, gdy OpenSSH można przygotować osobno.
Zdalne połączenie z systemu Windows
  • Windows (możliwa jest większość wersji)
  • Windows Server (większość wersji jest możliwa)

Na początku

Po zbudowaniu środowiska Windows w Internecie w chmurze lub VPS często używasz połączenia pulpitu zdalnego do obsługi zdalnego miejsca docelowego Windows.

W przypadku połączenia pulpitu zdalnego zawartość komunikacji jest szyfrowana, a jeśli nazwa użytkownika i hasło nie zostaną ujawnione, inne osoby nie będą logować się bez pozwolenia. Zawsze istnieje obawa, że ludzie będą próbowali zalogować się z dowolnego miejsca.

Niektóre główne chmury mają zapory sieciowe oddzielone od maszyn wirtualnych i istnieje funkcja ograniczania źródła połączenia. Te funkcje mogą nie być dostępne we wszystkich usługach. Szczególnie w środowiskach zbudowanych na niskim budżecie istnieje wiele przypadków, w których takie funkcje nie są dostępne.

Dlatego tym razem chciałbym maksymalnie ograniczyć źródło połączenia, dodając funkcję SSH . Ponieważ używany jest klucz prywatny i klucz publiczny, o ile klucz prywatny nie wycieknie, możliwość zdalnego logowania z innego środowiska może być maksymalnie zminimalizowana.

W takim przypadku użyjemy OpenSSH do zbudowania środowiska SSH.

Tworzenie zdalnego docelowego środowiska Windows

Zbuduj środowisko systemu Windows, które umożliwia zdalne łączenie się przez Internet. Nie ma znaczenia, gdzie jest kompilowany, o ile przechodzi przez Internet, ale na potrzeby tej weryfikacji zostanie zbudowany jako maszyna wirtualna na platformie Microsoft Azure. Kroki kompilacji na platformie Azure nie są istotne dla tej wskazówki, więc je pominę. Ponieważ tym razem zostanie użyty port 22, jeśli używasz platformy Azure, upewnij się, że komunikacja portu 22 przechodzi przez ustawienia maszyny wirtualnej na platformie Azure.

Jeśli tworzysz środowisko inne niż platforma Azure, upewnij się, że jesteś w miejscu, w którym możesz nawiązać połączenie pulpitu zdalnego z systemem Windows dla danego środowiska.

Ponadto wersja systemu Windows jest przeznaczona dla systemu Windows 10 lub nowszego albo Windows Server 2019 lub nowszego, co ułatwia tworzenie środowiska OpenSSH. Można go zaimplementować we wcześniejszym środowisku, ale zajmuje to trochę więcej czasu i wysiłku, ponieważ musisz osobno pobrać i skonfigurować OpenSSH.

W takim przypadku procedura jest taka sama jak w przypadku SFTP, więc zapoznaj się z poniższymi wskazówkami.

Konfigurowanie OpenSSH

Stąd będziemy pracować w zdalnym środowisku Windows. Najpierw połącz się ze zdalnym miejscem docelowym za pomocą połączenia pulpitu zdalnego. Jeśli Twoja chmura lub VPS zapewnia konsolę, możesz z niej skorzystać. Ponieważ tym razem działamy w środowisku Windows 11, kroki mogą się nieco różnić w innych wersjach.

Otwórz menu Start i wybierz Ustawienia.

Wybierz aplikację.

Wybierz opcję Funkcje opcjonalne.

Wybierz opcję Pokaż obiekty.

Nieco niżej na liście znajduje się "OpenSSH Server", więc zaznacz go i kliknij "Dalej".

Kliknij przycisk Zainstaluj.

Po zakończeniu instalacji i dodaniu "Serwera OpenSSH" do poniższej listy gotowe.

Konfiguracja usługi dla OpenSSH

Kliknij prawym przyciskiem myszy menu Start i wybierz Zarządzanie komputerem.

Wybierz Usługi z listy po lewej stronie.

Znajdź "OpenSSH SSH Server" na środkowej liście, kliknij prawym przyciskiem myszy i wybierz "Właściwości".

Podczas łączenia się zdalnie chcemy, aby serwer OpenSSH był uruchomiony, więc ustaw "Typ uruchomienia" na "Automatyczny".

Ponieważ w tej chwili nie działa, uruchomię go tutaj, łącznie z ustawieniem.

Po uruchomieniu kliknij przycisk OK, aby go zamknąć. Powinien być uruchomiony na liście.

Konfigurowanie protokołu OpenSSH

W stanie początkowym uwierzytelnianie za pomocą klucza prywatnego jest wyłączone, więc ustaw je. Otwórz następujący folder w Eksploratorze.

  • C:\ProgramData\ssh

Jednak powyższy folder może być folderem ukrytym, więc uczyń go widocznym, ustawiając opcje Eksploratora.

W folderze sshd_config znajduje się plik o nazwie, więc otwórz go za pomocą edytora tekstu, takiego jak Notatnik. Ponieważ tym razem będziemy wprowadzać zmiany, skopiuj i zduplikuj jako kopię zapasową sshd_config_old przed zmianą.

PubkeyAuthentication yes Szukać: Ten element jest ustawieniem określającym, czy włączyć uwierzytelnianie za pomocą klucza tajnego. Domyślnie jest wyłączony i mówi , ale jest zakomentowany, yes więc usuń komentarz.

Przed zmianą

#PubkeyAuthentication yes

Po zmianie

PubkeyAuthentication yes

PasswordAuthentication yes Szukać: Ten element jest ustawieniem określającym, czy włączyć uwierzytelnianie hasłem. Jest domyślnie włączony, a nawet jeśli włączysz uwierzytelnianie kluczem prywatnym, nie ma to znaczenia z punktu widzenia bezpieczeństwa, jeśli pozostanie włączony, więc odkomentuj go i no ustaw .

Przed zmianą

#PasswordAuthentication yes

Po zmianie

PasswordAuthentication no

Oznacz jako komentarz następujący wiersz na końcu: Jest to kluczowe ustawienie dla grupy administrators i wyłączymy je, ponieważ w tym przypadku będziemy obsługiwać logowanie dla poszczególnych użytkowników.

Przed zmianą

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Po zmianie

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Po zapisaniu pliku po OpenSSH SSH Server zmianie uruchom ponownie usługę, aby odzwierciedlić ustawienia.

Jeśli chcesz zmienić port

Jeśli chcesz zmienić port SSH, zmień następujące elementy.

Przed zmianą

#Port 22

Po zmianie

#Port <任意の番号>

Zmieniając numer portu, domyślny port nie zostanie zaatakowany, co doprowadzi do silniejszego bezpieczeństwa. Z drugiej strony zwiększa złożoność operacji, więc musisz być ostrożny.

Jeśli zmienisz numer portu, podczas nawiązywania połączenia musisz określić port inny niż 22.

Tworzenie kluczy prywatnych i publicznych

Jest to zadanie po stronie klienta. Jednak tak naprawdę nie ma znaczenia, gdzie pracujesz. Należy jednak uważać, aby nie ujawnić utworzonego klucza prywatnego.

Jeśli masz system Windows 10 lub nowszy, Windows Server 2019 lub nowszy, klient OpenSSH jest instalowany domyślnie, dzięki czemu możesz go łatwo utworzyć za pomocą polecenia. W innych środowiskach konieczne będzie zainstalowanie oddzielnego klienta OpenSSH lub użycie osobnego narzędzia.

Poniższe wskazówki dotyczą protokołu SFTP, ale zapoznaj się z nimi, aby skonfigurować klienta OpenSSH.

W środowisku klienckim uruchom wiersz polecenia, program PowerShell, terminal lub dowolne narzędzie, które może wykonywać polecenia.

Ponieważ będziesz tworzyć plik, przejdź cd do dowolnego katalogu za pomocą polecenia.

Uruchom następujące polecenie:

ssh-keygen -t rsa -f id_rsa

Możesz ustawić hasło (hasło) dla klucza, więc wprowadź je w razie potrzeby. Jeśli ustawisz hasło, bezpieczeństwo zostanie zwiększone, ale zwiększy to czas i wysiłek związany z wprowadzaniem hasła w późniejszym procesie.

Utworzono klucz publiczny (id_rsa.pub) i klucz prywatny (id_rsa).

Klucz publiczny (id_rsa.pub) zostanie później umieszczony w zdalnym miejscu docelowym. Klucz prywatny może znajdować się w dowolnym miejscu na kliencie zdalnym, ale musi znajdować się w folderze, do którego dostęp ma tylko konto używane ze względów bezpieczeństwa. Zasadniczo myślę, że nie ma problemu, jeśli umieścisz go w następującym folderze po stronie klienta. Jeśli używasz klienta OpenSSH, domyślnie przejdzie on do tego folderu.

  • C:\Users\<ユーザー名>\.ssh

Jeśli nie możesz utworzyć powyższego folderu w Eksploratorze, możesz go utworzyć za pomocą następującego polecenia.

cd C:\Users\<ユーザー名>
mkdir .ssh

Umieszczanie kluczy publicznych

Jest to operacja zdalna. Umieść utworzony klucz publiczny (id_rsa.pub) w zdalnym miejscu docelowym. Przenieś ten plik do następującego folderu: <ユーザー名> to nazwa konta użytkownika, do którego zalogujesz się podczas faktycznego połączenia zdalnego.

  • C:\Users\<ユーザー名>\.ssh

Jeśli nie masz folderu i nie możesz utworzyć folderu w Eksploratorze, możesz utworzyć folder za pomocą następującego polecenia.

cd C:\Users\<ユーザー名>
mkdir .ssh

Zmień wdrożony plik authorized_keys klucza publicznego na . Otóż to.

W zależności od środowiska plik może już istnieć authorized_keys . Może się tak zdarzyć, jeśli skonfigurowałeś połączenie SSH do innych celów. W takim przypadku authorized_keys zarejestrowałeś plik, otwierając plik i plik za pomocą Notatnika itp id_rsa.pub ., a następnie wyświetlając zawartość pliku id_rsa.pub w następnym wierszu authorized_keys. W authorized_keys można zarejestrować wiele kluczy publicznych.

Nawiązywanie połączenia za pomocą protokołu SSH

Podczas nawiązywania połączenia za pomocą polecenia OpenSSH

Istnieją różne sposoby łączenia się z SSH, ale zacznijmy od połączenia opartego na poleceniach. W rzeczywistości połączenie z najmniejszą liczbą kroków odbywa się za pomocą polecenia. Warunkiem wstępnym jest zainstalowanie klienta OpenSSH.

Uruchom wybrane narzędzie poleceń (wiersz polecenia, PowerShell, terminal).

Wprowadź następujące polecenie:

Format polecenia

ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>

Poniżej znajduje się wyjaśnienie parametrów. Ustaw go zgodnie ze swoim środowiskiem.

zmiennej
Nazwa parametruOpis
Protokół SSH Deklaracja używania protokołu SSH z protokołem OpenSSH.
-ja Deklaracja użycia pliku klucza prywatnego.
< ścieżkę do pliku klucza prywatnego> Opisz lokalizację utworzonego pliku klucza prywatnego. C:\Users\<ユーザー名>\.ssh Ścieżka jest opcjonalna. W przeciwnym razie wymagana jest ścieżka bezwzględna lub względna.
-L Ta deklaracja określa port, który ma być używany lokalnie i zdalnie podczas nawiązywania połączenia ze zdalnym miejscem docelowym.
< lokalny wolny port> Usługa Podłączanie pulpitu zdalnego zwykle używa portu 3389, ale można nawiązać połączenie przy użyciu dowolnego portu. Nie ma znaczenia, jaki to numer, o ile jest bezpłatny.
127.0.0.1 Jest to adres IP hosta, który rozpoznaje, skąd jest nawiązywane połączenie ze zdalnym miejscem docelowym. Zasadniczo 127.0.0.1 jest w porządku.
3389 Numer portu, który ma być używany w zdalnym miejscu docelowym. Zdalne miejsce docelowe jest zwykle połączone przez port 3389 z połączeniem pulpitu zdalnego, więc można je pozostawić bez zmian.
< nazwa konta użytkownika, z którym chcesz się połączyć> Określ konto, z którym chcesz się połączyć w zdalnym miejscu docelowym.
< adres IP lub nazwę hosta serwera, z którym chcesz się połączyć> Określa zdalny serwer docelowy.

Przykładowe dane wejściowe

ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194

Za pierwszym razem zostaniesz poproszony o podanie klucza, więc yes wpisz i naciśnij Enter.

Jeśli masz ustawione hasło dla klucza prywatnego, musisz je wprowadzić.

Następujące elementy będą w stanie połączenia. Widać, że wyświetlany jest użytkownik po stronie serwera, a nie klient. Gdy to okno jest wyświetlane, jest podłączone, więc nie zamykaj go. Jeśli go zamkniesz, połączenie zostanie zerwane.

Podczas łączenia się z PuTTY

Tutaj spróbujemy połączyć się z SSH za pomocą narzędzia o nazwie PuTTY.

Konwersja klucza prywatnego

Po pierwsze, jeśli używasz PuTTY, musisz przekonwertować klucz prywatny. Myślę, że w załączonym narzędziu jest "puttygen .exe", więc proszę go uruchomić.

Wybierz z menu "Konwersje – > klucz importu".

Wybierz utworzony klucz prywatny, w tym przypadku "id_rsa".

Jeśli ustawiłeś hasło, wprowadź je.

Wybierz z menu "Plik -> Zapisz klucz prywatny".

「. .ppk".

Po utworzeniu gotowe.

Konfigurowanie programu PuTTY

Uruchom plik putty.exe.

Wprowadź adres IP środowiska, z którym chcesz się połączyć. Jeśli masz domenę, możesz połączyć się z nazwą domeny.

Wybierz Połączenie -> Dane z menu po lewej stronie. W polu Nazwa użytkownika automatycznego logowania wprowadź nazwę konta środowiska, z którym chcesz się połączyć.

Z menu po lewej stronie wybierz pozycję Połączenie -> SSH -> Tunele. Wpisz każdy z nich w polu wprowadzania poniżej i kliknij przycisk "Dodaj".

Nazwa parametru Wartość Uwagi
Port źródłowy 13389 Każdy wolny port się nada. Użyję go później
Cel 127.0.0.1:3389

Po dodaniu powinno to wyglądać tak:

Następnie wybierz "Connection -> SSH -> Auth -> Cledentioals" z menu po lewej stronie i kliknij przycisk Przeglądaj dla "Plik klucza prywatnego do uwierzytelniania".

Wybierz zapisany klucz prywatny.

Wybierz "Sesja" w menu po lewej stronie, wprowadź wybraną nazwę dla Zapisz sesje i kliknij przycisk Zapisz. Od następnego razu ładowanie tego ustawienia jest w porządku.

Po potwierdzeniu zapisu kliknij przycisk "Otwórz".

Poniższy ekran zostanie wyświetlony przy pierwszym połączeniu. Kliknij przycisk Akceptuj.

Zobaczysz ekran, który wygląda jak wiersz polecenia. Jeśli masz hasło do klucza prywatnego, wprowadź je.

Jeśli zawartość wyświetlacza zmieni się, jak pokazano poniżej, zostanie podłączony. Widać, że wyświetlany jest użytkownik po stronie serwera, a nie klient. Gdy to okno jest wyświetlane, jest podłączone, więc nie zamykaj go. Jeśli go zamkniesz, połączenie zostanie zerwane.

Nawiązywanie połączenia pulpitu zdalnego za pomocą protokołu SSH

Teraz nawiążmy połączenie z pulpitem zdalnym podczas połączenia z SSH.

Podczas nawiązywania połączenia część komputera nie jest rzeczywistym adresem zdalnym, ale "localhost:< > nazwą portu określoną w połączeniu SSH". W przykładzie określono wartość 13389, więc tutaj połączymy się z "localhost:13389".

Jeśli zostanie wyświetlony ekran uwierzytelniania, możesz ocenić, że połączenie zostało zakończone. Wprowadź swoją nazwę użytkownika i hasło, aby się połączyć.

Jeśli potrafisz połączyć się w ten sposób, odniosłeś sukces.

Wyłącz zwykłe połączenia pulpitu zdalnego w ustawieniach zapory

W momencie poprzedniego elementu możesz teraz połączyć się ze zdalnym pulpitem za pomocą SSH. Jednak w tym stanie "Podłączanie pulpitu zdalnego przez SSH" zostało dodane tylko do "Normalnego podłączania pulpitu zdalnego". Pod względem bezpieczeństwa nic nie wnosi. Następną rzeczą do zrobienia jest uniemożliwienie "normalnego połączenia z pulpitem zdalnym".

Jeśli wprowadzisz to ustawienie, nie będziesz mógł się połączyć, z wyjątkiem "połączenia pulpitu zdalnego przez SSH", więc jeśli zadzierasz z ustawieniami, możesz nie mieć możliwości połączenia zdalnego. Dlatego upewnij się, że wcześniej sprawdzisz, czy możliwe jest "połączenie pulpitu zdalnego przez SSH" i będziesz w stanie obsługiwać środowisko zdalne w inny sposób, nawet jeśli klient, z którym próbujesz się połączyć, zniknie.

Tutaj skonfiguruj ustawienia zapory w "Podłączanie pulpitu zdalnego przez SSH". Dzieje się tak, ponieważ jeśli wykonasz operację z "normalnym połączeniem pulpitu zdalnego", zostanie on rozłączony w momencie ustawienia zapory.

Wyświetl Zaporę systemu Windows Defender z zabezpieczeniami zaawansowanymi. W zależności od wersji systemu Windows lokalizacja wyświetlacza będzie się różnić, dlatego należy go wyświetlać zgodnie z tą wersją.

Wybierz pozycję Reguły ruchu przychodzącego z menu po lewej stronie.

Na środkowej liście znajdź "Pulpit zdalny - tryb użytkownika (wejście TCP)" i otwórz jego właściwości.

Wybierz kartę Zakres, zmień lokalny adres IP na Te adresy IP, a następnie kliknij przycisk Dodaj.

Wpisz 127.0.0.1 i kliknij przycisk OK. Uniemożliwi to nawiązywanie połączeń pulpitu zdalnego z dowolnego miejsca innego niż 127.0.0.1. 127.0.0.1 to adres IP wskazujący na komputer. Jeśli wprowadzisz nieprawidłową wartość, możesz nie być w stanie połączyć się z dowolnego miejsca, więc bądź ostrożny.

Kliknij przycisk OK, aby potwierdzić.

Na razie samo to jest środkiem zaradczym, ale ustawmy też "Pulpit zdalny - Tryb użytkownika (odbiór UDP)".

Sprawdź, czy nie możesz połączyć się zdalnie za pomocą niczego innego niż SSH

Teraz spróbuj nawiązać połączenie pulpitu zdalnego z innego komputera, który nie korzysta z SSH.

Jeśli możesz się połączyć, zostanie wyświetlony ekran uwierzytelniania. Jest w porządku, jeśli możesz potwierdzić, że nie można nawiązać połączenia, jak pokazano poniżej.

Streszczenie

Dzięki najnowszemu systemowi Windows można teraz łatwo wprowadzić serwer SSH. Dodając ustawienia, możesz teraz łatwo zwiększyć bezpieczeństwo połączenia z pulpitem zdalnym. Ponieważ jednak jest odpowiedzialny tylko za środki bezpieczeństwa w samym systemie Windows, Jeśli chcesz, aby był bezpieczniejszy, myślę, że lepiej jest skonfigurować oddzielny serwer SSH lub zaporę sieciową przed połączeniem z systemem Windows.

Możesz także ściśle ustawić zabezpieczenia za pomocą SSH, ale gdy jest to zbyt trudne, nikt nie może się połączyć z powodu błędu operacyjnego. Uważaj, aby do tego nie dojść.