SFTP instellen en verifiëren met verificatie met openbare sleutel op clients en servers
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.
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.
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.
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
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.
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.
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 <ユーザー名>@<サーバー名>
Als u zich met succes aanmeldt, wordt u overgeschakeld naar de weergave van de ingelogde gebruiker.
U kunt ook controleren of u kunt inloggen met de opdracht dir.
Nu u een bestand met de naam "test3.txt" hebt voorbereid, verzendt u het bestand met de opdracht put.
put c:\temp\test3.txt
Als u naar de map C:\Users\sftptest op de server kijkt, ziet u dat het bestand test3.txt wordt verzonden.
Probeer van de klant te krijgen.
get test3.txt c:\temp\test4.txt
Ik kon bevestigen dat het dossier kon worden verkregen.
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.