Konfigurere og kontrollere SFTP med godkendelse af offentlige nøgler på klienter og servere
miljø
- Windows
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - Beta
※ Det virker i andre versioner, men det er ubekræftet
Først
Sidste gang oprettede du en SFTP-server for at kontrollere, at adgangskodegodkendelse giver dig mulighed for at sende og modtage filer. Denne gang sender og modtager sftp filer ved hjælp af godkendelse af offentlige nøgler.
Forberedelse på forhånd
- Klienten har en OpenSSH-klient installeret
- Der er installeret en OpenSSH-server på serveren.
- Serveren starter OpenSSH-tjenesten, og port 22 er frigivet.
Oprette private og offentlige nøgler i klienten
Log på klienten. Private og offentlige nøgler kan også oprettes på serversiden, men den private nøgle vil være klienten, og den offentlige nøgle vil blive opbevaret af serveren. Opret på klientsiden.
Start PowerShell med administratorrettigheder.
Opret en fil, gå til en mappe med cd-kommandoen, og skriv følgende kommando:
ssh-keygen -t rsa -f id_rsa
Du kan sætte et adgangsudtryk (adgangskode) i nøglen, så læg det, hvis det er nødvendigt.
Hvis nøglen er oprettet korrekt, oprettes de offentlige og private nøgler i mappen på følgende måde: "id_rsa" er den private nøgle, og "id_rsa.pub" er den offentlige nøgle.
Placere en offentlig nøgle på serveren
Log på Windows med din SFTP-konto til serveren.
Placer den oprettede offentlige nøgle "id_rsa.pub" i følgende mappe på serveren. 「. Hvis du ikke har en "ssh" mappe, skal du oprette en. Du kan også ændre filnavnet til "authorized_keys". (Erstat <> med det brugernavn, du logger på med SFTP).
- C:\Brugere\< brugernavn>\.ssh
Bemærk, at det kun er brugere med "administratorer" eller SFTP-brugere, der skal have adgang til denne fil. Sftp-forbindelser mislykkes altid, hvis andre brugere har adgang. NG har f.eks.
I dette eksempel, ". Adgangsrettighederne til mappen "ssh" er "Group:SYSTEM", "Group: Administrators" og "Bruger: sftptest". Hvis du ikke kan fjerne en tilladelse, skal du deaktivere nedarvning af tilladelser.
Aktiver godkendelse af offentlige nøgler på serveren
Log på serveren med administratorer giver brugerne tilladelse til at angive, og åbn derefter følgende mapper:
- C:\ProgramData\ssh
Da der er en fil kaldet "sshd_config", kopiere den og ændre filnavnet til "sshd_config_default" og oprette en sikkerhedskopi.
Åbn "sshd_config" i teksteditoren, der er startet med administratorrettigheder.
Hvis du vil aktivere godkendelse af offentlige nøgler, skal du ændre den på følgende måde:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Adgangskodegodkendelse er også aktiveret som standard, så hvis du vil deaktivere den, skal du ændre den på følgende måde.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Jeg ønsker at placere en offentlig nøgle for hver SFTP-konto, så jeg vil kommentere følgende linje:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Hvis du vil angive rodmappen for hver SFTP-konto, skal du tilføje følgende linje: Afhængigt af om du angiver dette eller ej, kan den ændres til formatet "C:\xxxxx" eller "/xxxxx", når du angiver en mappesti fra klienten.
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
eksempel
Match User TestUser
ChrootDirectory C:\Users\TestUser
Når du har gemt sshd_config, skal du genstarte OpenSSH-serveren.
Sende og modtage filer fra klienter med godkendelse af offentlige nøgler
Placer den private nøgle "id_rsa", som du oprettede, før du opretter forbindelse til SFTP, i en mappe, der kun er tilgængelig for den bruger, der kører SFTP. Bemærk, at sftp-forbindelser mislykkes, hvis de placeres i en mappe, som andre brugere kan få adgang til. Især hvis mappen har tilladelser til grupperne Brugere og alle, er det NG.
Dybest set anbefales det, fordi det automatisk refererer til stien, hvis du lægger den i følgende mappe.
- C:\Brugere\< brugernavn>\.ssh
Kundens ". Adgangsrettighederne til mappen "ssh" er "Group:SYSTEM", "Group: Administrators", "Bruger: < Login-bruger >".
Hvis du vil have adgang til sftp ved hjælp af den private nøgle, skal du skrive kommandoen på følgende måde (erstat <>): Hvis du har oprettet et adgangsudtryk, skal du også indtaste et adgangsudtryk.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Hvis du logger på, skifter du til visningen af den bruger, der er logget på.
Du kan også kontrollere, at du kan logge ind med kommandoen dir.
Nu, hvor du har udarbejdet en fil kaldet "test3.txt", skal du sende filen med put-kommandoen.
put c:\temp\test3.txt
Hvis du ser på mappen C på serversiden:\Brugere\sftptest, kan du se, at test3.txt-filen sendes.
Prøv at komme fra klienten.
get test3.txt c:\temp\test4.txt
Jeg var i stand til at bekræfte, at filen var i stand til at blive indhentet.
Resumé
Du kunne sende og modtage filer af SFTP ved hjælp af godkendelse af offentlige nøgler. Ved hjælp af en offentlig nøgle kan serversiden ikke kende adgangskoden. Det giver dig mulighed for at udveksle filer mere sikkert end adgangskodegodkendelse.