Nastavenie a overenie SFTP s overovaním verejného kľúča na klientoch a serveroch
ž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.
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.
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ľúč.
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
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.
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.
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 <ユーザー名>@<サーバー名>
Ak sa úspešne prihlásite, prejdete na zobrazenie prihláseného používateľa.
Môžete tiež skontrolovať, či sa môžete prihlásiť pomocou príkazu dir.
Teraz, keď ste pripravili súbor s názvom "test3.txt", pošlite súbor s príkazom put.
put c:\temp\test3.txt
Ak sa pozriete na priečinok C:\Users\sftptest na strane servera, môžete vidieť, že súbor test3.txt sa odosiela.
Skúste sa dostať od klienta.
get test3.txt c:\temp\test4.txt
Podarilo sa mi potvrdiť, že spis sa podarilo získať.
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.