SSH gebruiken om Verbinding met extern bureaublad veilig te gebruiken met Windows
Werkomgeving
- Externe verbinding met Windows
-
- Vensters 11
- Verbinding op afstand vanuit Windows
-
- Vensters 10
- Open SSH
-
- OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
Voorwaarden
- Externe verbinding met Windows
-
- Windows 10 of hoger (Pro of een andere editie vereist). Dit geldt echter niet als OpenSSH apart kan worden bereid.
- Windows Server 2019 of hoger. Dit geldt echter niet als OpenSSH apart kan worden bereid.
- Verbinding op afstand vanuit Windows
-
- Windows (de meeste versies zijn mogelijk)
- Windows Server (de meeste versies zijn mogelijk)
Eerst
Na het bouwen van een Windows-omgeving op internet in de cloud of VPS, gebruik je vaak een remote desktop verbinding om de remote Windows-bestemming te bedienen.
Bij een externe desktopverbinding wordt de communicatie-inhoud versleuteld en als de gebruikersnaam en het wachtwoord niet zijn gelekt, zullen anderen niet zonder toestemming inloggen. Er is altijd de zorg dat mensen overal proberen in te loggen.
Sommige grote clouds hebben firewalls die gescheiden zijn van virtuele machines en er is een functie om de verbindingsbron te beperken. Deze functies zijn mogelijk niet in alle services beschikbaar. Vooral in omgevingen die met een laag budget zijn gebouwd, zijn er veel gevallen waarin dergelijke functies niet beschikbaar zijn.
Daarom wil ik deze keer de verbindingsbron zoveel mogelijk beperken door de SSH-functie toe te voegen. Aangezien de private key en public key worden gebruikt, kan de mogelijkheid om op afstand in te loggen vanuit een andere omgeving zoveel mogelijk worden geminimaliseerd zolang de private key niet gelekt is.
In dit geval gebruiken we OpenSSH om de SSH-omgeving te bouwen.
Bouw een Windows-omgeving met externe bestemming
Bouw een Windows-omgeving waarmee u op afstand verbinding kunt maken via internet. Het maakt niet uit waar het is gebouwd, zolang het maar via internet gaat, maar voor deze verificatie wordt het gebouwd als een virtuele machine op Microsoft Azure. De stappen om te bouwen op Azure zijn niet relevant voor deze tip, dus die laat ik achterwege. Aangezien poort 22 deze keer wordt gebruikt, moet u ervoor zorgen dat poort 22-communicatie via de instellingen van de virtuele machine in Azure verloopt als u Azure gebruikt.
Als u in een andere omgeving dan Azure bouwt, moet u ervoor zorgen dat u zich in een positie bevindt waarin u een verbinding met extern bureaublad kunt maken met Windows voor uw omgeving.
Daarnaast richt de Windows-versie zich op Windows 10 of hoger, of Windows Server 2019 of hoger, waardoor het eenvoudig is om een OpenSSH-omgeving te bouwen. Het kan in een eerdere omgeving worden geïmplementeerd, maar het kost iets meer tijd en moeite omdat je OpenSSH apart moet downloaden en instellen.
In dat geval is de procedure hetzelfde als voor SFTP, dus raadpleeg de volgende tips.
OpenSSH instellen
Vanaf hier werken we in de externe Windows-omgeving. Maak eerst verbinding met de externe bestemming met een externe desktopverbinding. Als uw cloud of VPS een console biedt, kunt u deze gebruiken. Aangezien we deze keer in een Windows 11-omgeving werken, kunnen de stappen in andere versies iets anders zijn.
Open het menu Start en selecteer Instellingen.
Selecteer een app.
Selecteer Optionele functies.
Selecteer Functies weergeven.
Er staat "OpenSSH Server" iets lager in de lijst, dus vink het aan en klik op "Volgende".
Klik op Installeren.
Wanneer de installatie is voltooid en "OpenSSH Server" is toegevoegd aan de onderstaande lijst, ben je klaar.
Serviceconfiguratie voor OpenSSH
Klik met de rechtermuisknop op het menu Start en selecteer Computerbeheer.
Selecteer Services in de lijst aan de linkerkant.
Zoek "OpenSSH SSH Server" in de middelste lijst, klik met de rechtermuisknop en selecteer "Eigenschappen".
Wanneer we op afstand verbinding maken, willen we dat de OpenSSH-server actief is, dus stel het "Opstarttype" in op "Automatisch".
Aangezien het op dit moment niet draait, zal ik het hier starten, inclusief het instellen.
Eenmaal gestart, klikt u op de OK knop om het te sluiten. Het zou in de lijst moeten staan.
OpenSSH configureren
In de begintoestand is verificatie met een persoonlijke sleutel uitgeschakeld, dus stel deze in. Open de volgende map in Verkenner.
- C:\ProgramData\ssh
De bovenstaande map kan echter een verborgen map zijn, dus maak deze zichtbaar door de Verkenner-opties in te stellen.
Er is een bestand dat in de sshd_config
map wordt genoemd, dus open het met een teksteditor zoals Kladblok.
Aangezien we deze keer wijzigingen zullen aanbrengen, verzoeken wij u deze te kopiëren en te dupliceren als sshd_config_old
back-up vóór de wijziging.
PubkeyAuthentication yes
Zoeken:
Dit item is een instelling voor het al dan niet inschakelen van verificatie met geheime sleutels.
Standaard is het uitgeschakeld en staat er, maar het is becommentarieerd, yes
dus verwijder het commentaar.
Vóór de wijziging
#PubkeyAuthentication yes
Na de wijziging
PubkeyAuthentication yes
PasswordAuthentication yes
Zoeken:
Dit item is een instelling voor het al dan niet inschakelen van wachtwoordverificatie.
Het is standaard ingeschakeld, en zelfs als u verificatie met een privésleutel inschakelt, is het vanuit beveiligingsoogpunt zinloos als het ingeschakeld blijft, dus verwijder het commentaar en no
stel .
Vóór de wijziging
#PasswordAuthentication yes
Na de wijziging
PasswordAuthentication no
Reageer op de volgende regel aan het einde: Dit is de belangrijkste instelling voor de beheerdersgroep en we zullen deze uitschakelen omdat we in dit geval aanmeldingen per gebruiker ondersteunen.
Vóór de wijziging
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Na de wijziging
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Nadat u het bestand na OpenSSH SSH Server
de wijziging hebt opgeslagen, start u de service opnieuw om de instellingen weer te geven.
Als u de poort wilt wijzigen
Als u de SSH-poort wilt wijzigen, wijzigt u het volgende.
Vóór de wijziging
#Port 22
Na de wijziging
#Port <任意の番号>
Door het poortnummer te wijzigen, wordt de standaardpoort niet aangevallen, wat zal leiden tot een sterkere beveiliging. Aan de andere kant verhoogt het de complexiteit van de operatie, dus u moet voorzichtig zijn.
Als u het poortnummer wijzigt, moet u bij het aansluiten een andere poort dan 22 opgeven.
Privé- en openbare sleutels maken
Dit is een taak aan de kant van de klant. Het maakt echter niet echt uit waar je werkt. Pas echter op dat u de privésleutel die u hebt gemaakt niet lekt.
Als je Windows 10 of hoger, Windows Server 2019 of hoger hebt, is de OpenSSH-client standaard geïnstalleerd, zodat je deze eenvoudig met een commando kunt maken. In andere omgevingen moet je een aparte OpenSSH-client installeren of een aparte tool gebruiken.
De volgende tips zijn voor SFTP, maar raadpleeg ze voor het instellen van een OpenSSH-client.
Start in de clientomgeving een opdrachtprompt, PowerShell, terminal of een ander hulpprogramma dat opdrachten kan uitvoeren.
Aangezien u een bestand gaat maken, gaat u cd
met een opdracht naar een willekeurige map.
Voer de volgende opdracht uit:
ssh-keygen -t rsa -f id_rsa
U kunt een wachtwoordzin (wachtwoord) instellen voor de sleutel, dus voer deze indien nodig in. Als u een wachtwoordzin instelt, wordt de beveiliging verbeterd, maar het zal de tijd en moeite van het invoeren van de wachtwoordzin in het latere proces verhogen.
Er zijn een publieke sleutel (id_rsa.pub) en een private sleutel (id_rsa) aangemaakt.
De publieke sleutel (id_rsa.pub) wordt later op de externe bestemming geplaatst. De persoonlijke sleutel kan zich overal op de externe client bevinden, maar moet zich in een map bevinden die alleen toegankelijk is voor het account dat om beveiligingsredenen wordt gebruikt. In principe denk ik dat er geen probleem is als je het in de volgende map aan de clientzijde plaatst. Als je de OpenSSH-client gebruikt, wordt er standaard naar deze map gebladerd.
C:\Users\<ユーザー名>\.ssh
Als u de bovenstaande map niet in Verkenner kunt maken, kunt u deze maken met de volgende opdracht.
cd C:\Users\<ユーザー名>
mkdir .ssh
Plaatsing van openbare sleutels
Dit is een bediening op afstand.
Plaats de gemaakte openbare sleutel (id_rsa.pub) op de externe bestemming.
Verplaats dit bestand naar de volgende map: <ユーザー名>
is de naam van het gebruikersaccount waarop u inlogt wanneer u daadwerkelijk op afstand verbinding maakt.
C:\Users\<ユーザー名>\.ssh
Als u geen map hebt en geen map kunt maken in Verkenner, kunt u een map maken met de volgende opdracht.
cd C:\Users\<ユーザー名>
mkdir .ssh
Wijzig het geïmplementeerde openbare sleutelbestand authorized_keys
in . Dat is het.
Afhankelijk van uw omgeving beschikt u mogelijk al authorized_keys
over het bestand. Dit kan het geval zijn als je een SSH-verbinding voor andere doeleinden hebt opgezet.
In dat geval authorized_keys
heb je het bestand geregistreerd door het bestand en het bestand te openen met Kladblok, enz., en id_rsa.pub
de inhoud van de id_rsa.pub op de volgende regel van de authorized_keys te vermelden.
U kunt meerdere openbare sleutels registreren in authorized_keys.
Verbinding maken met SSH
Bij het verbinden met het OpenSSH-commando
Er zijn verschillende manieren om verbinding te maken met SSH, maar laten we beginnen met een verbinding op basis van commando's. In feite is de verbinding met het minste aantal stappen per commando. Voorwaarde is wel dat je de OpenSSH-client hebt geïnstalleerd.
Start het opdrachtgereedschap van uw keuze (Command Prompt, PowerShell, Terminal).
Voer de volgende opdracht in:
Commando Formaat
ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>
Hieronder volgt een uitleg van de parameters. Stel het in op basis van uw omgeving.
Beschrijving van de naam van de variabele parameter | ||
---|---|---|
SSH | Een verklaring om SSH te gebruiken met OpenSSH. | |
-Ik | Een verklaring voor het gebruik van een bestand met een persoonlijke sleutel. | |
< bestandspad met persoonlijke sleutel> | ● | Beschrijf de locatie van het bestand met de persoonlijke sleutel dat u hebt gemaakt. C:\Users\<ユーザー名>\.ssh Het pad is optioneel. Anders is een absoluut of relatief pad vereist. |
-L | Deze verklaring specificeert de poort die lokaal en op afstand moet worden gebruikt bij verbinding met een externe bestemming. | |
< lokale vrijhaven> | ● | Verbinding met extern bureaublad gebruikt meestal poort 3389, maar u kunt verbinding maken via elke poort. Het maakt niet uit welk nummer het is, als het maar gratis is. |
127.0.0.1 | Dit is het host-IP-adres dat herkent waar de externe bestemming is verbonden. In principe is 127.0.0.1 prima. | |
3389 | Het poortnummer dat op de externe bestemming moet worden gebruikt. De externe bestemming is meestal verbonden via poort 3389 met een externe desktopverbinding, zodat deze kan worden gelaten zoals hij is. | |
< naam van het gebruikersaccount waarmee u verbinding wilt maken> | ● | Geef op met welk account u verbinding wilt maken op de externe bestemming. |
< IP-adres of hostnaam van de server waarmee verbinding moet worden gemaakt> | ● | Hiermee geeft u de externe bestemmingsserver op. |
Voorbeeld invoer
ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194
De eerste keer wordt u om een toets gevraagd, dus yes
typ en druk op Enter.
Als u een wachtwoordzin hebt ingesteld voor uw privésleutel, moet u deze invoeren.
Het volgende bevindt zich in een verbonden status. U kunt zien dat de gebruiker aan de serverzijde wordt weergegeven, niet de client. Terwijl dit venster wordt weergegeven, is het verbonden, dus sluit het niet. Als je deze sluit, wordt de verbinding verbroken.
Bij verbinding met PuTTY
Hier zullen we proberen verbinding te maken met SSH met een tool genaamd PuTTY.
De privésleutel converteren
Ten eerste, als u PuTTY gebruikt, moet u de privésleutel converteren. Ik denk dat er "puttygen .exe" in de bijgevoegde tool zit, dus start het alsjeblieft.
Selecteer 'Conversies -> importsleutel' in het menu.
Selecteer de privésleutel die u hebt gemaakt, in dit geval "id_rsa".
Als u een wachtwoordzin hebt ingesteld, voert u deze in.
Selecteer "Bestand -> Privésleutel opslaan" in het menu.
「. .ppk"-bestand.
Eenmaal gemaakt, ben je klaar.
PuTTY configureren
Lanceer stopverf.exe.
Voer het IP-adres in van de omgeving waarmee u verbinding wilt maken. Als je een domein hebt, kun je verbinding maken met een domeinnaam.
Selecteer Verbinding -> gegevens in het menu aan de linkerkant. Voer in het veld Gebruikersnaam voor automatisch inloggen de accountnaam in van de omgeving waarmee u verbinding wilt maken.
Selecteer in het menu aan de linkerkant Verbinding -> SSH -> Tunnels. Voer ze allemaal in het onderstaande invoerveld in en klik op de knop "Toevoegen".
Parameter Naam Waarde | Opmerkingen | |
---|---|---|
Bron poort | 13389 | Elke vrije haven is voldoende. Ik zal het later gebruiken |
Bestemming | 127.0.0.1:3389 |
Wanneer toegevoegd, zou het er als volgt uit moeten zien:
Selecteer vervolgens "Connection -> SSH -> Auth -> Cledentioals" in het menu aan de linkerkant en klik op de knop Bladeren voor "Private key file for authentication".
Selecteer de privésleutel die u hebt opgeslagen.
Selecteer "Sessie" in het menu aan de linkerkant, voer een naam naar keuze in voor Sessies opslaan en klik op de knop Opslaan. Vanaf de volgende keer is het OK als u deze instelling laadt.
Nadat u het opslaan hebt bevestigd, klikt u op de knop "Openen".
Het volgende scherm wordt weergegeven wanneer u voor de eerste keer verbinding maakt. Klik op de knop Accepteren.
U ziet een scherm dat eruitziet als een opdrachtprompt. Als u een wachtwoordzin hebt voor de persoonlijke sleutel, voert u deze in.
Als de inhoud van het display verandert zoals hieronder weergegeven, wordt deze aangesloten. U kunt zien dat de gebruiker aan de serverzijde wordt weergegeven, niet de client. Terwijl dit venster wordt weergegeven, is het verbonden, dus sluit het niet. Als je deze sluit, wordt de verbinding verbroken.
Maak een verbinding met een extern bureaublad met SSH
Laten we nu een verbinding met het externe bureaublad maken terwijl we verbonden zijn met SSH.
Bij het verbinden is het computergedeelte niet het eigenlijke externe adres, maar "localhost:< > de poortnaam die is opgegeven in de SSH-verbinding". In het voorbeeld is 13389 opgegeven, dus hier zullen we verbinding maken met "localhost:13389".
Als het authenticatiescherm wordt weergegeven, kunt u beoordelen of de verbinding is voltooid. Voer uw gebruikersnaam en wachtwoord in om verbinding te maken.
Als je op deze manier verbinding kunt maken, is het gelukt.
Schakel normale externe bureaubladverbindingen uit in de firewallinstellingen
Op het moment van het vorige item kun je nu verbinding maken met een extern bureaublad via SSH. In deze status is 'Remote Desktop Connection by SSH' echter alleen toegevoegd aan 'Normal Remote Desktop Connection'. Qua veiligheid voegt het niets toe. Dus het volgende dat u moet doen, is een "normale externe desktopverbinding" voorkomen.
Als u deze instelling maakt, kunt u geen verbinding maken, behalve voor "remote desktop connection by SSH", dus als u met de instellingen knoeit, heeft u mogelijk niet de middelen om op afstand verbinding te maken. Zorg er daarom voor dat u van tevoren controleert of "remote desktop connection by SSH" mogelijk is, en dat u de externe omgeving op een andere manier kunt bedienen, zelfs als de client waarmee u verbinding probeert te maken verdwijnt.
Configureer hier de firewall-instellingen in "Remote Desktop Connection via SSH". Dit komt omdat als u de bewerking uitvoert met "normale externe bureaubladverbinding", de verbinding wordt verbroken op het moment dat u de firewall instelt.
Bekijk Windows Defender Firewall met geavanceerde beveiliging. Afhankelijk van de versie van Windows zal de locatie van het scherm variëren, dus geef het weer volgens die versie.
Selecteer Binnenkomende regels in het menu aan de linkerkant.
Zoek in de middelste lijst "Remote Desktop - User Mode (TCP In)" en open de eigenschappen ervan.
Selecteer het tabblad Bereik, wijzig het lokale IP-adres in Deze IP-adressen en klik op de knop Toevoegen.
Voer 127.0.0.1 in en klik op de knop OK. Dit voorkomt externe bureaubladverbindingen van ergens anders dan 127.0.0.1. 127.0.0.1 is het IP-adres dat naar uw computer verwijst. Als u de verkeerde waarde invoert, kunt u mogelijk nergens verbinding maken, dus wees voorzichtig.
Klik op de knop OK om te bevestigen.
Voorlopig is dit alleen al een tegenmaatregel, maar laten we ook "Remote Desktop - User Mode (UDP Receive)" instellen.
Controleer of je op afstand geen verbinding kunt maken met iets anders dan SSH
Probeer nu een externe bureaubladverbinding te maken vanaf een andere pc die geen SSH gebruikt.
Als u verbinding kunt maken, wordt het authenticatiescherm weergegeven. Het is OK als u kunt bevestigen dat de verbinding niet tot stand kan worden gebracht zoals hieronder weergegeven.
Samenvatting
Met de nieuwste Windows is het nu eenvoudig om een SSH-server te introduceren. Door instellingen toe te voegen, kunt u nu eenvoudig de beveiliging van uw remote desktop-verbinding verhogen. Aangezien het echter alleen verantwoordelijk is voor beveiligingsmaatregelen in Windows zelf, Als je het veiliger wilt maken, denk ik dat het beter is om een aparte SSH-server of firewall op te zetten voordat je verbinding maakt met Windows.
Je kunt de beveiliging ook strak instellen met SSH, maar als het te moeilijk is, kan niemand verbinding maken vanwege een operationele fout. Pas op dat je daar niet mee eindigt.