Настройка и проверка SFTP с аутентификацией с открытым ключом на клиентах и серверах
окружающая среда
- Виндоус
-
- Windows 10 Профессиональная
- Windows Server 2019
- Окна 7
- Windows Server 2012 R2
- ОпенСШ
-
- 7.7п1
- 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:\Пользователи\имя пользователя <>\.ssh
Обратите внимание, что только пользователи с «администраторами» или SFTP должны иметь доступ к этому файлу. Подключения Sftp всегда завершаются сбоем, если у других пользователей есть доступ. Например, NG имеет группу Пользователей или Всех, добавленных к разрешению.
В этом примере ". Права доступа к папке "ssh" - "Group:SYSTEM", "Group: Administrators" и "User: 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", "Group: Administrators", "User: < Login user >".
Если вы хотите получить доступ к 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, используя аутентификацию с открытым ключом. Используя открытый ключ, серверная сторона не сможет узнать пароль. Это позволяет обмениваться файлами более безопасно, чем аутентификация по паролю.