SFTP instellen en verifiëren met verificatie met openbare sleutel op clients en servers

Aanmaakdatum van pagina :

milieu

Ramen
  • Windows 10 Pro
  • Windows Server 2019
  • Vensters 7
  • Windows Server 2012 R2
OpenSSH
  • 7,7p1
  • 8.1p1 - Bèta

※ Het werkt in andere versies, maar het is onbevestigd

Eerst

De laatste keer stelt u een SFTP-server in om te controleren of u met wachtwoordverificatie bestanden kunt verzenden en ontvangen. Deze keer verzendt en ontvangt sftp bestanden met behulp van openbare-sleutelverificatie.

Voorbereiding vooraf

  • Op de client is een OpenSSH-client geïnstalleerd
  • Op de server is een OpenSSH-server geïnstalleerd.
  • De server start de OpenSSH-service en poort 22 wordt vrijgemaakt.

Persoonlijke en openbare sleutels maken in de client

Log in op de klant. Privé- en openbare sleutels kunnen ook aan de serverzijde worden gemaakt, maar de persoonlijke sleutel is de client en de openbare sleutel wordt door de server bewaard. Creëer aan de clientzijde.

Start PowerShell met beheerdersrechten.

image

Maak een bestand, ga naar een willekeurige map met de opdracht cd en typ de volgende opdracht:

ssh-keygen -t rsa -f id_rsa

U kunt een wachtwoordzin (wachtwoord) in de sleutel plaatsen, dus plaats deze indien nodig.

image

Als de sleutel is gegenereerd, worden de openbare en persoonlijke sleutels als volgt in de map gemaakt: "id_rsa" is de privésleutel en "id_rsa.pub" is de openbare sleutel.

image

image

Een openbare sleutel op de server plaatsen

Meld u aan bij Windows met uw SFTP-account voor de server.

Plaats de aangemaakte openbare sleutel "id_rsa.pub" in de volgende map op de server. 「. als je geen "ssh" -map hebt, maak er dan een aan. Wijzig ook de bestandsnaam in "authorized_keys". (Vervang de <> door de gebruikersnaam die u aanmeldt met SFTP.)

  • C:\Users\< gebruikersnaam>\.ssh

image

Houd er rekening mee dat alleen gebruikers met "beheerders" of SFTP-gebruikers toegang mogen hebben tot dit bestand. Sftp-verbindingen mislukken altijd als andere gebruikers toegang hebben. NG heeft bijvoorbeeld een groep gebruikers of iedereen toegevoegd aan de machtiging.

In dit voorbeeld, ". De toegangsrechten van de map "ssh" zijn "Group:SYSTEM", "Group: Administrators" en "User: sftptest". Als u een machtiging niet kunt verwijderen, schakelt u de overname van machtigingen uit.

Verificatie met openbare sleutels inschakelen op de server

Meld u aan bij de server met gebruikersmachtigingen voor beheerdersmachtigingen en open vervolgens de volgende mappen:

  • C: \\ ProgramData \\ ssh

Aangezien er een bestand is met de naam "sshd_config", kopieert u het en wijzigt u de bestandsnaam in "sshd_config_default" en stelt u een back-up in.

image

Open "sshd_config" in de teksteditor die is gestart met beheerdersrechten.

Als u verificatie met openbare sleutels wilt inschakelen, wijzigt u deze als volgt:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

Wachtwoordverificatie is ook standaard ingeschakeld, dus als u het wilt uitschakelen, wijzigt u het als volgt.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

Ik wil een openbare sleutel plaatsen voor elk SFTP-account, dus ik zal de volgende regel becommentariëren:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Als u de hoofdmap voor elk SFTP-account wilt opgeven, voegt u de volgende regel toe: Afhankelijk van of u dit opgeeft of niet, kan de indeling 'C:\xxxxx' of '/xxxxx' worden gewijzigd wanneer u een mappad opgeeft vanaf de client.

Match User <ユーザー名>
       ChrootDirectory <フォルダパス>

voorbeeld

Match User TestUser
       ChrootDirectory C:\Users\TestUser

Nadat u sshd_config hebt opgeslagen, start u de OpenSSH-server opnieuw op.

image

Bestanden verzenden en ontvangen van clients met verificatie met een openbare sleutel

Plaats de persoonlijke sleutel "id_rsa" die u hebt gemaakt voordat u verbinding maakt met SFTP in een map die alleen toegankelijk is voor de gebruiker die SFTP uitvoert. Houd er rekening mee dat sftp-verbindingen mislukken als ze in een map worden geplaatst die toegankelijk is voor andere gebruikers. Vooral als de map machtigingen heeft voor de groepen Gebruikers en Iedereen, is het NG.

Kortom, het wordt aanbevolen omdat het automatisch naar het pad verwijst als u het in de volgende map plaatst.

  • C:\Users\< gebruikersnaam>\.ssh

Client's ". De toegangsrechten van de map "ssh" zijn "Group:SYSTEM", "Group: Administrators", "User: < Login user >".

Als u sftp wilt openen met de persoonlijke sleutel, typt u de opdracht als volgt (vervang de <>): Als u een wachtwoordzin hebt ingesteld, voert u ook een wachtwoordzin in.

sftp -i id_rsa <ユーザー名>@<サーバー名>

image

Als u zich met succes aanmeldt, wordt u overgeschakeld naar de weergave van de ingelogde gebruiker.

image

U kunt ook controleren of u kunt inloggen met de opdracht dir.

image

Nu u een bestand met de naam "test3.txt" hebt voorbereid, verzendt u het bestand met de opdracht put.

put c:\temp\test3.txt

image

Als u naar de map C:\Users\sftptest op de server kijkt, ziet u dat het bestand test3.txt wordt verzonden.

image

Probeer van de klant te krijgen.

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

image

Ik kon bevestigen dat het dossier kon worden verkregen.

image

Samenvatting

U kunt bestanden verzenden en ontvangen via SFTP met behulp van verificatie met een openbare sleutel. Door een openbare sleutel te gebruiken, kan de serverzijde het wachtwoord niet weten. Hiermee kunt u bestanden veiliger uitwisselen dan wachtwoordverificatie.