Nastavení a ověření SFTP pomocí ověřování veřejného klíče na klientech a serverech

Datum vytvoření stránky :

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

image

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.

image

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íč.

image

image

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

image

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.

image

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.

image

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

image

Pokud se úspěšně přihlásíte, přepnete na zobrazení přihlášeného uživatele.

image

Můžete také zkontrolovat, zda se můžete přihlásit pomocí příkazu dir.

image

Nyní, když jste připravili soubor s názvem "test3.txt", odešlete soubor pomocí příkazu put.

put c:\temp\test3.txt

image

Pokud se podíváte na složku C:\Users\sftptest na straně serveru, uvidíte, že se odesílá soubor test3.txt.

image

Zkuste se dostat od klienta.

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

image

Podařilo se mi potvrdit, že se soubor podařilo získat.

image

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.