Настроювання та перевірка SFTP за допомогою автентифікації відкритого ключа на клієнтах і серверах

Дата створення сторінки :

середовище

Вікна
  • Windows 10 Pro
  • Windows Server 2019
  • Windows 7
  • Windows Server 2012 R2
Відкритийsh
  • 7.7p1
  • 8.1p1 - Бета-версія

※ Він працює в інших версіях, але не підтверджений

Спочатку

Минулого разу ви налаштувати сервер SFTP, щоб переконатися, що автентифікація паролем дозволяє надсилати та отримувати файли. На цей раз SFTP надсилає та отримує файли за допомогою автентифікації відкритого ключа.

Підготовка заздалегідь

  • Клієнт має openSSH клієнт інстальовано
  • На сервері інстальовано сервер OpenSSH.
  • Сервер запускає службу OpenSSH і порт 22 звільняється.

Створення закритих і відкритих ключів у клієнті

Увійдіть до клієнта. Приватні та відкриті ключі також можуть бути створені на стороні сервера, але закритим ключем буде клієнт, а відкритий ключ буде утримуватися сервером. Створіть на стороні клієнта.

Запустіть PowerShell із правами адміністратора.

image

Створіть файл, перейдіть до будь-якої папки за допомогою команди компакт-диска та введіть таку команду:

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:\Користувачі\< ім'я користувача>\.ssh

image

Зверніть увагу, що доступ до цього файлу мають лише користувачі з "адміністраторами" або SFTP. Sftp-з'єднання завжди не вдається, якщо інші користувачі мають доступ. Наприклад, NG має групу користувачів або всіх, які додаються до дозволу.

У цьому прикладі ". Права доступу до папки "ssh" - "Group:SYSTEM", "Група: адміністратори" та "Користувач: 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:\Користувачі\< ім'я користувача>\.ssh

Клієнта». Права доступу до папки "ssh" - "Group:SYSTEM", "Група: Адміністратори", "Користувач: < > користувача".

Якщо ви хочете отримати доступ до 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 за допомогою автентифікації відкритого ключа. За допомогою відкритого ключа серверна сторона не зможе знати пароль. Це дозволяє обмінюватися файлами більш безпечно, ніж аутентифікація паролем.