Настройка и проверка SFTP с аутентификацией с открытым ключом на клиентах и серверах

Дата создания страницы :

окружающая среда

Виндоус
  • Windows 10 Профессиональная
  • Windows Server 2019
  • Окна 7
  • Windows Server 2012 R2
ОпенСШ
  • 7.7п1
  • 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:\Пользователи\имя пользователя <>\.ssh

image

Обратите внимание, что только пользователи с «администраторами» или SFTP должны иметь доступ к этому файлу. Подключения Sftp всегда завершаются сбоем, если у других пользователей есть доступ. Например, NG имеет группу Пользователей или Всех, добавленных к разрешению.

В этом примере ". Права доступа к папке "ssh" - "Group:SYSTEM", "Group: Administrators" и "User: 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", "Group: Administrators", "User: < Login user >".

Если вы хотите получить доступ к 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, используя аутентификацию с открытым ключом. Используя открытый ключ, серверная сторона не сможет узнать пароль. Это позволяет обмениваться файлами более безопасно, чем аутентификация по паролю.