Configurarea și verificarea SFTP cu autentificarea cheii publice pe clienți și servere
mediu
- Windows
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - Beta
※ Funcționează în alte versiuni, dar este neconfirmat
La început
Ultima dată, configurați un server SFTP pentru a verifica dacă autentificarea prin parolă vă permite să trimiteți și să primiți fișiere. De data aceasta, SFTP trimite și primește fișiere folosind autentificarea cu cheie publică.
Pregătirea în avans
- Clientul are un client OpenSSH instalat
- Serverul are instalat un server OpenSSH.
- Serverul pornește serviciul OpenSSH și portul 22 este eliberat.
Crearea cheilor private și publice în client
Conectați-vă la client. Cheile private și publice pot fi, de asemenea, create pe partea de server, dar cheia privată va fi clientul și cheia publică va fi deținută de server. Creați pe partea de client.
Porniți PowerShell cu drepturi de administrator.
Creați un fișier, accesați orice folder cu comanda cd și tastați următoarea comandă:
ssh-keygen -t rsa -f id_rsa
Puteți pune o frază de acces (parolă) în cheie, așa că vă rugăm să o puneți dacă este necesar.
Dacă cheia este generată cu succes, cheile publice și private sunt create în folderul după cum urmează: "id_rsa" este cheia privată, iar "id_rsa.pub" este cheia publică.
Plasarea unei chei publice pe server
Conectați-vă la Windows cu contul SFTP pentru server.
Vă rugăm să plasați cheia publică creată "id_rsa.pub" în următorul folder de pe server. 「. dacă nu aveți un folder "ssh", vă rugăm să creați unul. De asemenea, schimbați numele fișierului în "authorized_keys". (Înlocuiți <> cu numele de utilizator pe care îl conectați cu SFTP.)
- C:\Users\< nume de utilizator>\.ssh
Rețineți că numai utilizatorii cu "administratori" sau SFTP utilizatorii ar trebui să aibă acces la acest fișier. Conexiunile SFTP nu reușesc întotdeauna dacă alți utilizatori au acces. De exemplu, NG are un grup de utilizatori sau toată lumea anexat la permisiune.
În acest exemplu, ". Drepturile de acces ale folderului "ssh" sunt "Group:SYSTEM", "Group: Administrators" și "User: sftptest". Dacă nu puteți elimina o permisiune, dezactivați moștenirea permisiunii.
Activați autentificarea cheii publice pe server
Conectați-vă la server cu administratorii permisiunilor utilizatorilor, apoi deschideți următoarele foldere:
- C:\ProgramData\ssh
Deoarece există un fișier numit "sshd_config", copiați-l și schimbați numele fișierului în "sshd_config_default" și configurați o copie de rezervă.
Deschideți "sshd_config" în editorul de text lansat cu privilegii de administrator.
Pentru a activa autentificarea cheii publice, modificați-o după cum urmează:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
De asemenea, autentificarea prin parolă este activată în mod implicit, deci dacă doriți să o dezactivați, modificați-o după cum urmează.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Vreau să plaseez o cheie publică pentru fiecare cont SFTP, așa că voi comenta următoarea linie:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Dacă doriți să specificați directorul rădăcină pentru fiecare cont SFTP, adăugați următoarea linie: În funcție de faptul dacă specificați acest lucru sau nu, atunci când specificați o cale de folder de la client, se poate schimba în formatul "C:\xxxxx" sau "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
exemplu
Match User TestUser
ChrootDirectory C:\Users\TestUser
După ce salvați sshd_config, reporniți serverul OpenSSH.
Trimiteți și primiți fișiere de la clienți cu autentificare cu cheie publică
Plasați cheia privată "id_rsa" pe care ați creat-o înainte de a vă conecta cu SFTP într-un folder accesibil numai utilizatorului care execută SFTP. Rețineți că conexiunile SFTP nu vor reuși dacă sunt plasate într-un folder care poate fi accesat de alți utilizatori. Mai ales dacă folderul are permisiuni pentru grupurile Utilizatori și Toată lumea, este NG.
Practic, este recomandat deoarece se va referi automat la calea dacă o puneți în următorul folder.
- C:\Users\< nume de utilizator>\.ssh
Clientului ". Drepturile de acces ale folderului "ssh" sunt "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
Dacă doriți să accesați SFTP utilizând cheia privată, tastați comanda după cum urmează (înlocuiți <>): Dacă ați configurat o frază de acces, introduceți și o frază de acces.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Dacă vă conectați cu succes, veți fi comutat la afișarea utilizatorului conectat.
De asemenea, puteți verifica dacă vă puteți conecta cu comanda dir.
Acum, că ați pregătit un fișier numit "test3.txt", trimiteți fișierul cu comanda put.
put c:\temp\test3.txt
Dacă vă uitați la folderul C:\Users\sftptest de partea serverului, puteți vedea că fișierul test3.txt este trimis.
Încercați să obțineți de la client.
get test3.txt c:\temp\test4.txt
Am putut confirma că dosarul a putut fi obținut.
Rezumat
Ați reușit să trimiteți și să primiți fișiere prin SFTP utilizând autentificarea cu cheie publică. Utilizând o cheie publică, partea de server nu va putea cunoaște parola. Vă permite să faceți schimb de fișiere mai sigur decât autentificarea prin parolă.