Настроювання та перевірка 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 із правами адміністратора.
Створіть файл, перейдіть до будь-якої папки за допомогою команди компакт-диска та введіть таку команду:
ssh-keygen -t rsa -f id_rsa
Ви можете помістити парольну фразу (пароль) в ключ, тому, будь ласка, поставте її, якщо це необхідно.
Якщо ключ успішно згенеровано, відкриті та закриті ключі створюються в папці наступним чином: "id_rsa" є закритим ключем, а "id_rsa.pub" - публічним ключем.
Розміщення відкритого ключа на сервері
Увійдіть до Windows за допомогою облікового запису SFTP для сервера.
Будь ласка, помістіть створений відкритий ключ "id_rsa.pub" у наступній папці на сервері. 「. якщо у вас немає папки "ssh", створіть її. Крім того, змініть ім'я файлу на "authorized_keys". (Замініть <> ім'ям користувача, яке ви входите в систему за допомогою SFTP.)
- C:\Користувачі\< ім'я користувача>\.ssh
Зверніть увагу, що доступ до цього файлу мають лише користувачі з "адміністраторами" або SFTP. Sftp-з'єднання завжди не вдається, якщо інші користувачі мають доступ. Наприклад, NG має групу користувачів або всіх, які додаються до дозволу.
У цьому прикладі ". Права доступу до папки "ssh" - "Group:SYSTEM", "Група: адміністратори" та "Користувач: 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:\Користувачі\< ім'я користувача>\.ssh
Клієнта». Права доступу до папки "ssh" - "Group:SYSTEM", "Група: Адміністратори", "Користувач: < > користувача".
Якщо ви хочете отримати доступ до 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 за допомогою автентифікації відкритого ключа. За допомогою відкритого ключа серверна сторона не зможе знати пароль. Це дозволяє обмінюватися файлами більш безпечно, ніж аутентифікація паролем.