Använda SSH för att på ett säkert sätt använda Anslutning till fjärrskrivbord till Windows
Omvärld
- Fjärranslutning till Windows
-
- Windows 11 (på engelska)
- Fjärranslutning från Windows
-
- Windows 10 (på engelska)
- OpenSSH
-
- OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
Förutsättningar
- Fjärranslutning till Windows
-
- Windows 10 eller senare (Pro eller annan utgåva krävs). Detta gäller dock inte om OpenSSH kan framställas separat.
- Windows Server 2019 eller senare. Detta gäller dock inte om OpenSSH kan framställas separat.
- Fjärranslutning från Windows
-
- Windows (de flesta versioner är möjliga)
- Windows Server (de flesta versioner är möjliga)
Först
När du har byggt en Windows-miljö på Internet i molnet eller VPS använder du ofta en fjärrskrivbordsanslutning för att använda fjärrmålet för Windows.
Vid fjärrskrivbordsanslutning krypteras kommunikationsinnehållet, och om användarnamnet och lösenordet inte läcker ut kommer andra inte att logga in utan tillstånd. Det finns alltid en oro för att folk kommer att försöka logga in var som helst.
Vissa större moln har brandväggar som är separata från virtuella datorer, och det finns en funktion för att begränsa anslutningskällan. Dessa funktioner kanske inte är tillgängliga i alla tjänster. Särskilt i miljöer som bygger på en låg budget finns det många fall där sådana funktioner inte är tillgängliga.
Därför skulle jag den här gången vilja begränsa anslutningskällan så mycket som möjligt genom att lägga till SSH-funktionen . Eftersom den privata nyckeln och den publika nyckeln används, så länge den privata nyckeln inte läcker ut, kan möjligheten att logga in på distans från en annan miljö minimeras så mycket som möjligt.
I det här fallet kommer vi att använda OpenSSH för att bygga SSH-miljön.
Skapa en Windows-miljö för fjärrmål
Skapa en Windows-miljö som gör att du kan fjärransluta via Internet. Det spelar ingen roll var den är byggd så länge den går över Internet, men för den här verifieringen kommer den att byggas som en virtuell maskin på Microsoft Azure. Stegen för att bygga på Azure är inte relevanta för det här tipset, så jag utelämnar dem. Eftersom port 22 kommer att användas den här gången, om du använder Azure, kontrollerar du att port 22-kommunikationen passerar genom inställningarna för den virtuella datorn i Azure.
Om du skapar i en annan miljö än Azure kontrollerar du att du är i en position där du kan upprätta en fjärrskrivbordsanslutning till Windows för din miljö.
Dessutom riktar sig Windows-versionen till Windows 10 eller senare, eller Windows Server 2019 eller senare, vilket gör det enkelt att skapa en OpenSSH-miljö. Det kan implementeras i en tidigare miljö, men det tar lite mer tid och ansträngning eftersom du måste ladda ner och ställa in OpenSSH separat.
I så fall är proceduren densamma som för SFTP, så se följande tips.
Konfigurera OpenSSH
Härifrån kommer vi att arbeta i den fjärranslutna Windows-miljön. Anslut först till fjärrdestinationen med en fjärrskrivbordsanslutning. Om ditt moln eller VPS tillhandahåller en konsol kan du använda den. Eftersom vi arbetar i en Windows 11-miljö den här gången kan stegen vara något annorlunda i andra versioner.
Öppna Start-menyn och välj Inställningar.
Välj en app.
Välj Valfria funktioner.
Välj Visa funktioner.
Det finns "OpenSSH Server" lite längre ner i listan, så kontrollera den och klicka på "Nästa".
Klicka på Installera.
När installationen är klar och "OpenSSH Server" läggs till i listan nedan är du klar.
Tjänstkonfiguration för OpenSSH
Högerklicka på Start-menyn och välj Datorhantering.
Välj Tjänster i listan till vänster.
Hitta "OpenSSH SSH Server" i mittenlistan, högerklicka och välj "Egenskaper".
När du fjärransluter vill vi att OpenSSH-servern ska vara igång, så ställ in "Starttyp" till "Automatisk".
Eftersom den inte är igång för tillfället kommer jag att starta den här, inklusive att ställa in den.
När du har startat klickar du på OK knappen för att stänga den. Den bör köras i listan.
Konfigurera OpenSSH
I det inledande tillståndet är autentisering med privat nyckel inaktiverad, så ställ in den. Öppna följande mapp i Utforskaren.
- C:\ProgramData\ssh
Ovanstående mapp kan dock vara en dold mapp, så gör den synlig genom att ställa in Explorer-alternativen.
Det finns en fil som heter i mappen sshd_config
, så öppna den med en textredigerare som Anteckningar.
Eftersom vi kommer att göra ändringar den här gången, vänligen kopiera och duplicera som en sshd_config_old
säkerhetskopia före ändringen.
PubkeyAuthentication yes
Söka:
Det här alternativet är en inställning för om autentisering med hemlig nyckel ska aktiveras.
Som standard är den inaktiverad och det står , men det kommenteras bort, yes
så avkommentera det.
Före ändringen
#PubkeyAuthentication yes
Efter ändringen
PubkeyAuthentication yes
PasswordAuthentication yes
Söka:
Det här alternativet är en inställning för om lösenordsautentisering ska aktiveras.
Det är aktiverat som standard, och även om du aktiverar autentisering med privat nyckel är det meningslöst ur säkerhetssynpunkt om det förblir aktiverat, så avkommentera det och no
ställ in .
Före ändringen
#PasswordAuthentication yes
Efter ändringen
PasswordAuthentication no
Kommentera ut följande rad i slutet: Det här är nyckelinställningen för administratörsgruppen och vi inaktiverar den eftersom vi kommer att stödja inloggningar per användare i det här fallet.
Före ändringen
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Efter ändringen
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
När du har sparat filen efter OpenSSH SSH Server
ändringen startar du om tjänsten för att återspegla inställningarna.
Om du vill byta port
Om du vill ändra SSH-porten ändrar du följande.
Före ändringen
#Port 22
Efter ändringen
#Port <任意の番号>
Genom att ändra portnumret kommer standardporten inte att attackeras, vilket kommer att leda till starkare säkerhet. Å andra sidan ökar det komplexiteten i operationen, så du måste vara försiktig.
Om du ändrar portnumret måste du ange en annan port än 22 när du ansluter.
Skapa privata och offentliga nycklar
Det här är en uppgift på klientsidan. Men det spelar egentligen ingen roll var du arbetar. Var dock försiktig så att du inte läcker den privata nyckel som du skapade.
Om du har Windows 10 eller senare, Windows Server 2019 eller senare, installeras OpenSSH-klienten som standard, så att du enkelt kan skapa den med ett kommando. I andra miljöer måste du installera en separat OpenSSH-klient eller använda ett separat verktyg.
Följande tips gäller för SFTP, men se dem för att konfigurera en OpenSSH-klient.
Starta en kommandotolk, PowerShell, terminal eller något annat verktyg som kan köra kommandon i klientmiljön.
Eftersom du kommer att skapa en fil, flytta cd
till valfri katalog med ett kommando.
Kör följande kommando:
ssh-keygen -t rsa -f id_rsa
Du kan ställa in en lösenfras (lösenord) för nyckeln, så ange den om det behövs. Om du anger en lösenfras förbättras säkerheten, men det ökar tiden och ansträngningen för att ange lösenfrasen i den senare processen.
En offentlig nyckel (id_rsa.pub) och en privat nyckel (id_rsa) har skapats.
Den offentliga nyckeln (id_rsa.pub) kommer att placeras på fjärrdestinationen senare. Den privata nyckeln kan finnas var som helst på fjärrklienten, men den måste finnas i en mapp som endast kan nås av det konto som används av säkerhetsskäl. I grund och botten tror jag att det inte är något problem om du placerar den i följande mapp på klientsidan. Om du använder OpenSSH-klienten kommer den att bläddra till den här mappen som standard.
C:\Users\<ユーザー名>\.ssh
Om du inte kan skapa mappen ovan i Utforskaren kan du skapa den med följande kommando.
cd C:\Users\<ユーザー名>
mkdir .ssh
Placering av publika nycklar
Detta är en fjärroperation.
Placera den skapade offentliga nyckeln (id_rsa.pub) på fjärrmålet.
Flytta den här filen till följande mapp: <ユーザー名>
är namnet på det användarkonto som du kommer att logga in på när du faktiskt fjärransluter.
C:\Users\<ユーザー名>\.ssh
Om du inte har en mapp och inte kan skapa en mapp i Utforskaren kan du skapa en mapp med följande kommando.
cd C:\Users\<ユーザー名>
mkdir .ssh
Ändra den distribuerade filen authorized_keys
med den offentliga nyckeln till . Det är allt.
Beroende på din miljö kanske du redan authorized_keys
har filen. Detta kan vara fallet om du har konfigurerat en SSH-anslutning för andra ändamål.
I så fall authorized_keys
har du registrerat filen genom att öppna filen och filen med Anteckningar osv. och id_rsa.pub
ange innehållet i id_rsa.pub på nästa rad i authorized_keys.
Du kan registrera flera offentliga nycklar i authorized_keys.
Anslut med SSH
När du ansluter med kommandot OpenSSH
Det finns olika sätt att ansluta till SSH, men låt oss börja med en kommandobaserad anslutning. Faktum är att anslutningen med minst antal steg är med kommando. Som en förutsättning måste du ha OpenSSH-klienten installerad.
Starta valfritt kommandoverktyg (kommandotolken, PowerShell, Terminal).
Ange följande kommando:
Kommando Format
ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>
Följande är en förklaring av parametrarna. Ställ in den enligt din miljö.
Variabel Parameternamn | Beskrivning | |
---|---|---|
SSH | En deklaration om att använda SSH med OpenSSH. | |
-jag | En deklaration om att använda en fil med en privat nyckel. | |
< filsökväg för privat nyckel> | ● | Beskriv platsen för filen med den privata nyckeln som du skapade. C:\Users\<ユーザー名>\.ssh Sökvägen är valfri. Annars krävs en absolut eller relativ sökväg. |
-L | Denna deklaration anger vilken port som ska användas lokalt och på distans vid anslutning till en fjärrdestination. | |
< lokal frihamn> | ● | Anslutning till fjärrskrivbord använder vanligtvis port 3389, men du kan ansluta med valfri port. Det spelar ingen roll vilket nummer det är, så länge det är gratis. |
127.0.0.1 | Det här är värdens IP-adress som känner igen var fjärrdestinationen är ansluten från. I grund och botten är 127.0.0.1 bra. | |
3389 | Portnumret som ska användas på fjärrdestinationen. Fjärrdestinationen är vanligtvis ansluten via port 3389 med en fjärrskrivbordsanslutning, så den kan lämnas som den är. | |
< namnet på det användarkonto som du vill ansluta till> | ● | Ange vilket konto du vill ansluta till på fjärrdestinationen. |
< IP-adress eller värdnamn för servern att ansluta till> | ● | Anger fjärrmålservern. |
Exempel på indata
ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194
Första gången kommer du att bli ombedd att ange en nyckel, så yes
skriv och tryck på Enter.
Om du har angett en lösenfras för din privata nyckel måste du ange den.
Följande kommer att vara i ett anslutet tillstånd. Du kan se att användaren på serversidan visas, inte klienten. Medan det här fönstret visas är det anslutet, så stäng det inte. Om du stänger den kommer anslutningen att brytas.
När du ansluter med PuTTY
Här kommer vi att försöka ansluta till SSH med ett verktyg som heter PuTTY.
Konvertera den privata nyckeln
Om du använder PuTTY måste du först konvertera den privata nyckeln. Jag tror att det finns "puttygen .exe" i det bifogade verktyget, så starta det.
Välj Konverteringar > importnyckel på menyn.
Välj den privata nyckel som du skapade, i det här fallet "id_rsa".
Om du har angett en lösenfras anger du den.
Välj "Arkiv -> Spara privat nyckel" från menyn.
「. .ppk"-filen.
När du har skapat den är du klar.
Konfigurera PuTTY
Starta putty.exe.
Ange IP-adressen för den miljö som du vill ansluta till. Om du har en domän kan du ansluta med ett domännamn.
Välj Anslutning -> Data på menyn till vänster. I fältet Användarnamn för automatisk inloggning anger du kontonamnet för den miljö som du vill ansluta till.
I menyn till vänster väljer du Anslutning -> SSH -> tunnlar. Ange var och en av dem i inmatningsfältet nedan och klicka på knappen "Lägg till".
Parameternamn Värde | Anmärkningar | |
---|---|---|
Källport | 13389 | Vilken ledig port som helst duger. Jag kommer att använda den senare |
Destination | 127.0.0.1:3389 |
När den läggs till ska den se ut så här:
Välj sedan "Anslutning -> SSH -> Auth -> Cledentioals" från menyn till vänster och klicka på knappen Bläddra för "Privat nyckelfil för autentisering".
Välj den privata nyckel som du har sparat.
Välj "Session" i menyn till vänster, ange ett valfritt namn för Spara sessioner och klicka på knappen Spara. Från och med nästa gång är det OK om du laddar den här inställningen.
När du har bekräftat sparandet klickar du på knappen "Öppna".
Följande skärm kommer att visas när du ansluter för första gången. Klicka på knappen Acceptera.
Du kommer att se en skärm som ser ut som en kommandotolk. Om du har en lösenfras för den privata nyckeln anger du den.
Om visningsinnehållet ändras enligt nedan kommer det att anslutas. Du kan se att användaren på serversidan visas, inte klienten. Medan det här fönstret visas är det anslutet, så stäng det inte. Om du stänger den kommer anslutningen att brytas.
Gör en fjärrskrivbordsanslutning med SSH
Låt oss nu göra en fjärrskrivbordsanslutning medan vi är anslutna till SSH.
När du ansluter är datordelen inte den faktiska fjärradressen, utan "localhost:< > portnamnet som anges i SSH-anslutningen". I exemplet angavs 13389, så här ansluter vi till "localhost:13389".
Om autentiseringsskärmen visas kan du bedöma att anslutningen är klar. Ange ditt användarnamn och lösenord för att ansluta.
Om du kan ansluta på det här sättet har du lyckats.
Inaktivera vanliga fjärrskrivbordsanslutningar i brandväggsinställningarna
Vid tidpunkten för föregående objekt kan du nu ansluta till ett fjärrskrivbord med SSH. Men i det här läget har "Anslutning till fjärrskrivbord via SSH" endast lagts till i "Normal anslutning till fjärrskrivbord". När det gäller säkerhet tillför det ingenting. Så nästa sak att göra är att förhindra en "normal fjärrskrivbordsanslutning".
Om du gör den här inställningen kommer du inte att kunna ansluta förutom "fjärrskrivbordsanslutning med SSH", så om du bråkar med inställningarna kanske du inte har möjlighet att fjärransluta. Se därför till att kontrollera i förväg att "fjärrskrivbordsanslutning med SSH" är möjlig, och att kunna styra fjärrmiljön på annat sätt även om klienten du försöker ansluta till försvinner.
Här konfigurerar du brandväggsinställningarna i "Anslutning till fjärrskrivbord via SSH". Detta beror på att om du utför operationen med "normal fjärrskrivbordsanslutning" kommer den att kopplas bort i det ögonblick du ställer in brandväggen.
Visa Windows Defender-brandväggen med avancerad säkerhet. Beroende på vilken version av Windows du har varierar placeringen av skärmen, så visa den enligt den versionen.
Välj Regler för inkommande trafik på menyn till vänster.
I den mellersta listan hittar du "Fjärrskrivbord – Användarläge (TCP In)" och öppnar dess egenskaper.
Välj fliken Omfång, ändra den lokala IP-adressen till Dessa IP-adresser och klicka på knappen Lägg till.
Ange 127.0.0.1 och klicka på OK-knappen. Detta förhindrar fjärrskrivbordsanslutningar från någon annanstans än 127.0.0.1. 127.0.0.1 är IP-adressen som pekar på din maskin. Om du anger fel värde kanske du inte kan ansluta var som helst, så var försiktig.
Klicka på OK-knappen för att bekräfta.
För närvarande är detta i sig en motåtgärd, men låt oss också ställa in "Fjärrskrivbord - Användarläge (UDP-mottagning)".
Kontrollera att du inte kan fjärransluta med något annat än SSH
Försök nu att göra en fjärrskrivbordsanslutning från en annan dator som inte använder SSH.
Om du kan ansluta visas autentiseringsskärmen. Det är OK om du kan bekräfta att anslutningen inte kan göras enligt bilden nedan.
Sammanfattning
Med den senaste versionen av Windows är det nu enkelt att introducera en SSH-server. Genom att lägga till inställningar kan du nu enkelt öka säkerheten för din fjärrskrivbordsanslutning. Men eftersom det bara är ansvarigt för säkerhetsåtgärder i själva Windows, Om du vill göra det säkrare tycker jag att det är att föredra att sätta upp en separat SSH-server eller brandvägg innan du ansluter till Windows.
Du kan också ställa in säkerheten tätt med SSH, men när det är för svårt kan ingen ansluta på grund av ett driftfel. Var försiktig så att du inte hamnar i det.