Konfigurere og kontrollere SFTP med godkendelse af offentlige nøgler på klienter og servere

Dato for oprettelse af side :

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.

image

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.

image

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.

image

image

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

image

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.

image

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

image

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 <ユーザー名>@<サーバー名>

image

Hvis du logger på, skifter du til visningen af den bruger, der er logget på.

image

Du kan også kontrollere, at du kan logge ind med kommandoen dir.

image

Nu, hvor du har udarbejdet en fil kaldet "test3.txt", skal du sende filen med put-kommandoen.

put c:\temp\test3.txt

image

Hvis du ser på mappen C på serversiden:\Brugere\sftptest, kan du se, at test3.txt-filen sendes.

image

Prøv at komme fra klienten.

get test3.txt c:\temp\test4.txt

image

Jeg var i stand til at bekræfte, at filen var i stand til at blive indhentet.

image

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.