Настройване и проверка на SFTP с удостоверяване с публичен ключ на клиенти и сървъри
околна среда
- Уиндоус
-
- Windows 10 Pro
- Windows Сървър 2019
- Windows 7
- Windows Server 2012 R2
- Отваряне наSSH
-
- 7.7p1
- 8.1p1 - Бета
Тя работи в други версии, но е непотвърдена
Отначало
Последният път настройвате SFTP сървър, за да проверите дали удостоверяването с парола ви позволява да изпращате и получавате файлове. Този път sftp изпраща и получава файлове с помощта на удостоверяване с публичен ключ.
Подготовка предварително
- Клиентът има инсталиран OpenSSH клиент
- Сървърът има инсталиран OpenSSH сървър.
- Сървърът стартира услугата OpenSSH и порт 22 е освободен.
Създаване на частни и публични ключове в клиента
Влезте в клиента. Частни и публични ключове също могат да бъдат създадени от страната на сървъра, но частният ключ ще бъде клиентът и публичният ключ ще се държи от сървъра. Създаване от страната на клиента.
Стартирайте PowerShell с администраторски права.
Създайте файл, отидете в която и да е папка с командата cd и въведете следната команда:
ssh-keygen -t rsa -f id_rsa
Можете да поставите фраза за достъп (парола) в ключа, така че, моля, поставете го, ако е необходимо.
Ако ключът се генерира успешно, публичните и частните ключове се създават в папката, както следва: "id_rsa" е частният ключ и "id_rsa.pub" е публичният ключ.
Поставяне на публичен ключ на сървъра
Влезте в Windows с вашия SFTP акаунт за сървъра.
Моля, поставете създадения публичен ключ "id_rsa.pub" в следната папка на сървъра. 「. ако нямате папка "ssh", моля, създайте такава. Също така променете името на файла на "authorized_keys". (Заменете <> с потребителското име, което влизате с SFTP.)
- C:\Users\< потребителско име>\.ssh
Имайте предвид, че само потребители с "администратори" или SFTP потребители трябва да имат достъп до този файл. Sftp връзките винаги се провалят, ако други потребители имат достъп. Например NG има група потребители или всички приложени към разрешението.
В този пример, ". Правата за достъп на папката "ssh" са "Група:СИСТЕМА", "Група: администратори" и "Потребител: sftptest". Ако не можете да премахнете разрешение, деактивирайте наследяването на разрешение.
Разрешаване на удостоверяване с публичен ключ на сървъра
Влезте в сървъра с администратори разрешения потребители и след това отворете следните папки:
- C:\ProgramData\ssh
Тъй като има файл, наречен "sshd_config", копирайте го и променете името на файла на "sshd_config_default" и настройте резервно копие.
Отворете "sshd_config" в текстовия редактор, стартиран с привилегии на администратор.
За да разрешите удостоверяване с публичен ключ, променете го, както следва:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Също така удостоверяването с парола е разрешено по подразбиране, така че ако искате да го деактивирате, променете го по следния начин.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Искам да поставя публичен ключ за всеки SFTP акаунт, така че ще коментирам следния ред:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Ако искате да зададете главната директория за всеки SFTP акаунт, добавете следния ред: В зависимост от това дали указвате това или не, когато зададете път на папка от клиента, той може да се промени във формат "C:\xxxxx" или "/xxxxx".
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
пример
Match User TestUser
ChrootDirectory C:\Users\TestUser
След като запишете sshd_config, рестартирайте OpenSSH сървъра.
Изпращане и получаване на файлове от клиенти с удостоверяване с публичен ключ
Поставете частния ключ "id_rsa", който сте създали, преди да се свържете с SFTP, в папка, която е достъпна само за потребителя, който изпълнява SFTP. Имайте предвид, че sftp връзките ще бъдат неуспешни, ако бъдат поставени в папка, до която може да се осъществи достъп от други потребители. Особено ако папката има разрешения за групите Потребители и всеки, това е NG.
По принцип се препоръчва, защото автоматично ще се отнася за пътя, ако го поставите в следната папка.
- C:\Users\< потребителско име>\.ssh
На Клиента ". Правата за достъп на папката "ssh" са "Група:СИСТЕМА", "Група: администратори", "Потребител: < Вход потребител >".
Ако искате да получите достъп до SFTP с помощта на частния ключ, въведете командата, както следва (заменете <>): Ако сте настроили фраза за достъп, въведете и фраза за достъп.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Ако влезете успешно, ще бъдете превключени на дисплея на влезлия потребител.
Можете също да проверите дали можете да влезете с командата dir.
Сега, когато сте подготвили файл, наречен "test3.txt", изпратете файла с командата put.
put c:\temp\test3.txt
Ако погледнете папката C:\Users\sftptest от страна на сървъра, можете да видите, че се изпраща файла test3.txt.
Опитайте да получите от клиента.
get test3.txt c:\temp\test4.txt
Успях да потвърдя, че досието е в състояние да бъде получено.
Резюме
Успяхте да изпращате и получавате файлове от SFTP, като използвате удостоверяване с публичен ключ. С помощта на публичен ключ сървърната страна няма да може да знае паролата. Тя ви позволява да обменяте файлове по-сигурно от удостоверяване с парола.