Configurarea și verificarea SFTP cu autentificarea cheii publice pe clienți și servere

Data creării paginii :

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.

image

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.

image

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

image

image

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

image

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

image

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.

image

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

image

Dacă vă conectați cu succes, veți fi comutat la afișarea utilizatorului conectat.

image

De asemenea, puteți verifica dacă vă puteți conecta cu comanda dir.

image

Acum, că ați pregătit un fișier numit "test3.txt", trimiteți fișierul cu comanda put.

put c:\temp\test3.txt

image

Dacă vă uitați la folderul C:\Users\sftptest de partea serverului, puteți vedea că fișierul test3.txt este trimis.

image

Încercați să obțineți de la client.

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

image

Am putut confirma că dosarul a putut fi obținut.

image

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