Configurar y verificar SFTP con autenticación de clave pública en clientes y servidores

Fecha de creación de la página :

medio ambiente

Windows
  • Windows 10 Pro
  • Windows Server 2019
  • Ventanas 7
  • Windows Server 2012 R2
OpenSSH
  • 7,7p1
  • 8.1p1 - Beta

※ Funciona en otras versiones, pero no está confirmado

Al principio

La última vez, configuró un servidor SFTP para comprobar que la autenticación con contraseña le permite enviar y recibir archivos. Esta vez, sftp envía y recibe archivos utilizando la autenticación de clave pública.

Preparación por adelantado

  • El cliente tiene instalado un cliente OpenSSH
  • El servidor tiene instalado un servidor OpenSSH.
  • El servidor inicia el servicio OpenSSH y el puerto 22 se libera.

Crear claves privadas y públicas en el cliente

Inicie sesión en el cliente. Las claves privadas y públicas también se pueden crear en el lado del servidor, pero la clave privada será el cliente y la clave pública será retenida por el servidor. Crear en el lado del cliente.

Inicie PowerShell con derechos de administrador.

image

Cree un archivo, vaya a cualquier carpeta con el comando cd y escriba el siguiente comando:

ssh-keygen -t rsa -f id_rsa

Puede poner una frase de contraseña (contraseña) en la clave, así que por favor póngala si es necesario.

image

Si la clave se genera correctamente, las claves públicas y privadas se crean en la carpeta de la siguiente manera: "id_rsa" es la clave privada y "id_rsa.pub" es la clave pública.

image

image

Colocar una clave pública en el servidor

Inicie sesión en Windows con su cuenta SFTP para el servidor.

Coloque la clave pública creada "id_rsa.pub" en la siguiente carpeta del servidor. 「. si no tiene una carpeta "ssh", cree una. Además, cambie el nombre del archivo a "authorized_keys". (Reemplace el <> con el nombre de usuario en el que inicia sesión con SFTP).

  • C:\Usuarios\< nombre de usuario>\.ssh

image

Tenga en cuenta que solo los usuarios con "administradores" o usuarios SFTP deben tener acceso a este archivo. Las conexiones Sftp siempre fallan si otros usuarios tienen acceso. Por ejemplo, NG tiene un grupo de Usuarios o Todos anexados al permiso.

En este ejemplo, ". Los derechos de acceso de la carpeta "ssh" son "Group:SYSTEM", "Group: Administrators" y "User: sftptest". Si no puede quitar un permiso, deshabilite la herencia de permisos.

Habilitar la autenticación de clave pública en el servidor

Inicie sesión en el servidor con permisos de administrador de usuarios y, a continuación, abra las siguientes carpetas:

  • C:\ProgramData\ssh

Dado que hay un archivo llamado "sshd_config", cópielo y cambie el nombre del archivo a "sshd_config_default" y configure una copia de seguridad.

image

Abra "sshd_config" en el editor de texto iniciado con privilegios de administrador.

Para habilitar la autenticación de clave pública, cámbielo de la siguiente manera:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

Además, la autenticación de contraseña está habilitada de forma predeterminada, por lo que si desea deshabilitarla, cámbielo de la siguiente manera.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

Quiero colocar una clave pública para cada cuenta SFTP, así que comentaré la siguiente línea:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Si desea especificar el directorio raíz para cada cuenta SFTP, agregue la línea siguiente: Dependiendo de si especifica esto o no, cuando especifique una ruta de carpeta desde el cliente, puede cambiar al formato "C:\xxxxx" o "/xxxxx".

Match User <ユーザー名>
       ChrootDirectory <フォルダパス>

ejemplo

Match User TestUser
       ChrootDirectory C:\Users\TestUser

Después de guardar sshd_config, reinicie el servidor OpenSSH.

image

Enviar y recibir archivos de clientes con autenticación de clave pública

Coloque la clave privada "id_rsa" que creó antes de conectarse con SFTP en una carpeta a la que solo pueda acceder el usuario que ejecuta SFTP. Tenga en cuenta que las conexiones sftp fallarán si se colocan en una carpeta a la que pueden acceder otros usuarios. Especialmente si la carpeta tiene permisos para los grupos Usuarios y Todos, es NG.

Básicamente, se recomienda porque se referirá automáticamente a la ruta si la coloca en la siguiente carpeta.

  • C:\Usuarios\< nombre de usuario>\.ssh

Cliente's". Los derechos de acceso de la carpeta "ssh" son "Group:SYSTEM", "Group: Administrators", "User: < Login user >".

Si desea acceder a sftp mediante la clave privada, escriba el comando de la siguiente manera (reemplace el <>): Si ha configurado una frase de contraseña, ingrese también una frase de contraseña.

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

image

Si inicia sesión correctamente, se le cambiará a la visualización del usuario que ha iniciado sesión.

image

También puede comprobar que puede iniciar sesión con el comando dir.

image

Ahora que ha preparado un archivo llamado "test3.txt", envíe el archivo con el comando put.

put c:\temp\test3.txt

image

Si observa la carpeta C:\Users\sftptest del lado del servidor, puede ver que se está enviando el archivo test3.txt.

image

Intente obtener del cliente.

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

image

Pude confirmar que el archivo se pudo obtener.

image

Resumen

Pudo enviar y recibir archivos mediante SFTP mediante la autenticación de clave pública. Al usar una clave pública, el lado del servidor no podrá conocer la contraseña. Le permite intercambiar archivos de forma más segura que la autenticación con contraseña.