Nastavení a ověření SFTP pomocí ověřování veřejného klíče na klientech a serverech
životní prostředí
- Windows
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - Beta
※ Funguje v jiných verzích, ale je nepotvrzené
Nejprve
Naposledy jste nastavili server SFTP, který ověřuje, že ověřování heslem umožňuje odesílat a přijímat soubory. Tentokrát sftp odesílá a přijímá soubory pomocí ověřování veřejným klíčem.
Příprava předem
- Klient má nainstalovaného klienta OpenSSH
- Na serveru je nainstalován server OpenSSH.
- Server spustí službu OpenSSH a port 22 je uvolněn.
Vytvoření privátních a veřejných klíčů v klientovi
Přihlaste se ke klientovi. Soukromé a veřejné klíče lze také vytvořit na straně serveru, ale privátním klíčem bude klient a veřejný klíč bude držen serverem. Vytvořte na straně klienta.
Spusťte PowerShell s právy správce.
Vytvořte soubor, přejděte do libovolné složky pomocí příkazu CD a zadejte následující příkaz:
ssh-keygen -t rsa -f id_rsa
Do klíče můžete vložit přístupové heslo (heslo), takže jej prosím v případě potřeby vložte.
Pokud je klíč úspěšně vygenerován, vytvoří se ve složce veřejné a soukromé klíče takto: "id_rsa" je soukromý klíč a "id_rsa.pub" je veřejný klíč.
Umístění veřejného klíče na server
Přihlaste se k Windows pomocí svého účtu SFTP pro server.
Vytvořený veřejný klíč "id_rsa.pub" umístěte do následující složky na serveru. 「. pokud nemáte složku "ssh", vytvořte ji. Změňte také název souboru na "authorized_keys". (Nahraďte <> uživatelským jménem, které přihlásíte pomocí SFTP.)
- C:\Users\< uživatelské jméno>\.ssh
Všimněte si, že k tomuto souboru by měli mít přístup pouze uživatelé s uživateli "administrators" nebo SFTP. Připojení Sftp vždy selžou, pokud k nim mají přístup ostatní uživatelé. Například NG má skupinu uživatelů nebo všichni připojeni k oprávnění.
V tomto příkladu ". Přístupová práva složky "ssh" jsou "Group:SYSTEM", "Group: Administrators" a "User: sftptest". Pokud nemůžete odebrat oprávnění, zakažte dědičnost oprávnění.
Povolení ověřování veřejného klíče na serveru
Přihlaste se k serveru pomocí uživatelů oprávnění správců a otevřete následující složky:
- C:\ProgramData\ssh
Vzhledem k tomu, že existuje soubor s názvem "sshd_config", zkopírujte jej a změňte název souboru na "sshd_config_default" a nastavte zálohu.
Otevřete "sshd_config" v textovém editoru spuštěné s oprávněními správce.
Chcete-li povolit ověřování veřejného klíče, změňte ho takto:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Ověřování heslem je také ve výchozím nastavení povoleno, takže pokud jej chcete zakázat, změňte jej následujícím způsobem.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Chci umístit veřejný klíč pro každý účet SFTP, takže se vyjádřím k následujícímu řádku:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Pokud chcete zadat kořenový adresář pro každý účet SFTP, přidejte následující řádek: V závislosti na tom, zda to zadáte nebo ne, se při zadání cesty ke složce z klienta může změnit na formát "C:\xxxxx" nebo "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
příklad
Match User TestUser
ChrootDirectory C:\Users\TestUser
Po uložení sshd_config restartujte server OpenSSH.
Odesílání a přijímání souborů od klientů s ověřováním veřejného klíče
Umístěte soukromý klíč "id_rsa", který jste vytvořili před připojením k SFTP, do složky, která je přístupná pouze uživateli, který používá SFTP. Všimněte si, že připojení sftp se nezdaří, pokud jsou umístěna do složky, ke které mají přístup jiní uživatelé. Zvláště pokud má složka oprávnění pro skupiny Uživatelé a Všichni, je to NG.
V podstatě se doporučuje, protože bude automaticky odkazovat na cestu, pokud ji vložíte do následující složky.
- C:\Users\< uživatelské jméno>\.ssh
Klient je ". Přístupová práva složky "ssh" jsou "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
Pokud chcete získat přístup k sftp pomocí privátního klíče, zadejte příkaz následujícím způsobem (nahraďte <>): Pokud jste nastavili přístupové heslo, zadejte také přístupové heslo.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Pokud se úspěšně přihlásíte, přepnete na zobrazení přihlášeného uživatele.
Můžete také zkontrolovat, zda se můžete přihlásit pomocí příkazu dir.
Nyní, když jste připravili soubor s názvem "test3.txt", odešlete soubor pomocí příkazu put.
put c:\temp\test3.txt
Pokud se podíváte na složku C:\Users\sftptest na straně serveru, uvidíte, že se odesílá soubor test3.txt.
Zkuste se dostat od klienta.
get test3.txt c:\temp\test4.txt
Podařilo se mi potvrdit, že se soubor podařilo získat.
Shrnutí
Pomocí ověřování veřejného klíče jste mohli odesílat a přijímat soubory pomocí SFTP. Pomocí veřejného klíče nebude strana serveru moci znát heslo. Umožňuje vám vyměňovat soubory bezpečněji než ověřování heslem.