Nastavenie a overenie SFTP s overovaním verejného kľúča na klientoch a serveroch

Dátum vytvorenia strany :

životné prostredie

Windows
  • Windows 10 Pro
  • Windows Server 2019
  • Windows 7
  • Windows Server 2012 R2
OpenSSH
  • 7.7p1
  • 8.1p1 - Beta

※ Funguje v iných verziách, ale je nepotvrdený

Najskôr

Naposledy ste nastavili server SFTP na overenie, či overenie hesla umožňuje odosielať a prijímať súbory. Tentokrát SFTP odosiela a prijíma súbory pomocou overovania verejného kľúča.

Príprava vopred

  • Klient má nainštalovaný klient OpenSSH
  • Server má nainštalovaný server OpenSSH.
  • Server spustí službu OpenSSH a port 22 je uvoľnený.

Vytvorenie súkromných a verejných kľúčov v klientovi

Prihláste sa k klientovi. Súkromné a verejné kľúče môžu byť tiež vytvorené na strane servera, ale súkromný kľúč bude klient a verejný kľúč bude držaný serverom. Vytvorte na strane klienta.

Spustite PowerShell s právami správcu.

image

Vytvorte súbor, prejdite do ľubovoľného priečinka pomocou príkazu CD a zadajte nasledujúci príkaz:

ssh-keygen -t rsa -f id_rsa

Do kľúča môžete vložiť prístupovú frázu (heslo), preto ju v prípade potreby vložte.

image

Ak je kľúč úspešne vygenerovaný, v priečinku sa vytvoria verejné a súkromné kľúče takto: "id_rsa" je súkromný kľúč a "id_rsa.pub" je verejný kľúč.

image

image

Umiestnenie verejného kľúča na server

Prihláste sa do systému Windows pomocou konta SFTP pre server.

Vytvorený verejný kľúč "id_rsa.pub" umiestnite do nasledujúceho priečinka na serveri. 「. Ak nemáte priečinok "ssh", vytvorte ho. Zmeňte tiež názov súboru na "authorized_keys". (Nahraďte <> používateľským menom, do ktoré sa prihlásite pomocou SFTP.)

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

image

Všimnite si, že prístup k tomuto súboru by mali mať len používatelia s "správcami" alebo používateľmi SFTP. Pripojenia Sftp vždy zlyhajú, ak majú prístup iní používatelia. Napríklad NG má skupinu používateľov alebo všetci, ktorí sú prilodení k povoleniu.

V tomto príklade". Prístupové práva priečinka "ssh" sú "Group:SYSTEM", "Group: Administrators" a "User: sftptest". Ak nemôžete odstrániť povolenie, vypnite dedičnosť povolení.

Povoliť overenie verejného kľúča na serveri

Prihláste sa na server s používateľmi povolení správcu a potom otvorte nasledujúce priečinky:

  • C:\ProgramData\ssh

Keďže existuje súbor s názvom "sshd_config", skopírujte ho a zmeňte názov súboru na "sshd_config_default" a nastavte zálohu.

image

Otvorte "sshd_config" v textovom editore spustenom s oprávneniami správcu.

Ak chcete povoliť overenie verejného kľúča, zmeňte ho takto:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

Overenie heslom je predvolene povolené, takže ak ho chcete vypnúť, zmeňte ho nasledovne.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

Chcem umiestniť verejný kľúč pre každý účet SFTP, takže budem komentovať nasledujúci riadok:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Ak chcete zadať koreňový adresár pre každé konto SFTP, pridajte nasledujúci riadok: V závislosti od toho, či to zadáte alebo nie, keď zadáte cestu k priečinku od klienta, môže sa zmeniť na formát "C:\xxxxx" alebo "/xxxxx".

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

príklad

Match User TestUser
       ChrootDirectory C:\Users\TestUser

Po uložení sshd_config reštartujte server OpenSSH.

image

Odosielanie a prijímanie súborov od klientov s overovaním verejného kľúča

Umiestnite súkromný kľúč "id_rsa", ktorý ste vytvorili pred pripojením k SFTP, do priečinka, ktorý je prístupný iba používateľovi, ktorý používa SFTP. Všimnite si, že pripojenia sftp zlyhajú, ak sú umiestnené v priečinku, ku ktorému majú prístup iní používatelia. Najmä ak má priečinok povolenia pre skupiny Používatelia a Všetci, je to NG.

V podstate sa odporúča, pretože automaticky odkazuje na cestu, ak ju vložíte do nasledujúceho priečinka.

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

Klient ". Prístupové práva priečinka "ssh" sú "Group:SYSTEM", "Skupina: Správcovia", "Používateľ: < Prihlásenie používateľa >".

Ak chcete získať prístup k sftp pomocou súkromného kľúča, zadajte príkaz nasledovne (nahraďte <>): Ak ste nastavili prístupovú frázu, zadajte aj prístupovú frázu.

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

image

Ak sa úspešne prihlásite, prejdete na zobrazenie prihláseného používateľa.

image

Môžete tiež skontrolovať, či sa môžete prihlásiť pomocou príkazu dir.

image

Teraz, keď ste pripravili súbor s názvom "test3.txt", pošlite súbor s príkazom put.

put c:\temp\test3.txt

image

Ak sa pozriete na priečinok C:\Users\sftptest na strane servera, môžete vidieť, že súbor test3.txt sa odosiela.

image

Skúste sa dostať od klienta.

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

image

Podarilo sa mi potvrdiť, že spis sa podarilo získať.

image

Súhrn

Súbory SFTP ste mohli odosielať a prijímať pomocou overovania verejného kľúča. Pomocou verejného kľúča nebude strana servera schopná poznať heslo. Umožňuje vám vymieňať súbory bezpečnejšie ako overovanie heslom.