Настройване и проверка на SFTP с удостоверяване с публичен ключ на клиенти и сървъри

Дата на създаване на страница :

околна среда

Уиндоус
  • Windows 10 Pro
  • Windows Сървър 2019
  • Windows 7
  • Windows Server 2012 R2
Отваряне наSSH
  • 7.7p1
  • 8.1p1 - Бета

⿥ Тя работи в други версии, но е непотвърдена

Отначало

Последният път настройвате SFTP сървър, за да проверите дали удостоверяването с парола ви позволява да изпращате и получавате файлове. Този път sftp изпраща и получава файлове с помощта на удостоверяване с публичен ключ.

Подготовка предварително

  • Клиентът има инсталиран OpenSSH клиент
  • Сървърът има инсталиран OpenSSH сървър.
  • Сървърът стартира услугата OpenSSH и порт 22 е освободен.

Създаване на частни и публични ключове в клиента

Влезте в клиента. Частни и публични ключове също могат да бъдат създадени от страната на сървъра, но частният ключ ще бъде клиентът и публичният ключ ще се държи от сървъра. Създаване от страната на клиента.

Стартирайте PowerShell с администраторски права.

image

Създайте файл, отидете в която и да е папка с командата cd и въведете следната команда:

ssh-keygen -t rsa -f id_rsa

Можете да поставите фраза за достъп (парола) в ключа, така че, моля, поставете го, ако е необходимо.

image

Ако ключът се генерира успешно, публичните и частните ключове се създават в папката, както следва: "id_rsa" е частният ключ и "id_rsa.pub" е публичният ключ.

image

image

Поставяне на публичен ключ на сървъра

Влезте в Windows с вашия SFTP акаунт за сървъра.

Моля, поставете създадения публичен ключ "id_rsa.pub" в следната папка на сървъра. 「. ако нямате папка "ssh", моля, създайте такава. Също така променете името на файла на "authorized_keys". (Заменете <> с потребителското име, което влизате с SFTP.)

  • C:\Users\< потребителско име>\.ssh

image

Имайте предвид, че само потребители с "администратори" или SFTP потребители трябва да имат достъп до този файл. Sftp връзките винаги се провалят, ако други потребители имат достъп. Например NG има група потребители или всички приложени към разрешението.

В този пример, ". Правата за достъп на папката "ssh" са "Група:СИСТЕМА", "Група: администратори" и "Потребител: sftptest". Ако не можете да премахнете разрешение, деактивирайте наследяването на разрешение.

Разрешаване на удостоверяване с публичен ключ на сървъра

Влезте в сървъра с администратори разрешения потребители и след това отворете следните папки:

  • C:\ProgramData\ssh

Тъй като има файл, наречен "sshd_config", копирайте го и променете името на файла на "sshd_config_default" и настройте резервно копие.

image

Отворете "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 сървъра.

image

Изпращане и получаване на файлове от клиенти с удостоверяване с публичен ключ

Поставете частния ключ "id_rsa", който сте създали, преди да се свържете с SFTP, в папка, която е достъпна само за потребителя, който изпълнява SFTP. Имайте предвид, че sftp връзките ще бъдат неуспешни, ако бъдат поставени в папка, до която може да се осъществи достъп от други потребители. Особено ако папката има разрешения за групите Потребители и всеки, това е NG.

По принцип се препоръчва, защото автоматично ще се отнася за пътя, ако го поставите в следната папка.

  • C:\Users\< потребителско име>\.ssh

На Клиента ". Правата за достъп на папката "ssh" са "Група:СИСТЕМА", "Група: администратори", "Потребител: < Вход потребител >".

Ако искате да получите достъп до SFTP с помощта на частния ключ, въведете командата, както следва (заменете <>): Ако сте настроили фраза за достъп, въведете и фраза за достъп.

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

image

Ако влезете успешно, ще бъдете превключени на дисплея на влезлия потребител.

image

Можете също да проверите дали можете да влезете с командата dir.

image

Сега, когато сте подготвили файл, наречен "test3.txt", изпратете файла с командата put.

put c:\temp\test3.txt

image

Ако погледнете папката C:\Users\sftptest от страна на сървъра, можете да видите, че се изпраща файла test3.txt.

image

Опитайте да получите от клиента.

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

image

Успях да потвърдя, че досието е в състояние да бъде получено.

image

Резюме

Успяхте да изпращате и получавате файлове от SFTP, като използвате удостоверяване с публичен ключ. С помощта на публичен ключ сървърната страна няма да може да знае паролата. Тя ви позволява да обменяте файлове по-сигурно от удостоверяване с парола.