¿Cómo funciona SFTP sin un par de clave pública / privada generado manualmente?

11

Estoy aprendiendo sobre SSH y cómo usarlo para asegurar transferencias de archivos y comandos entre una máquina Windows y un servidor Linux. Todo lo que he leído hasta ahora indica que necesito usar un cliente SFTP (como WinSCP) para conectarme a mi servidor y transferir archivos. Al profundizar un poco más, los documentos de WinSCP nunca me dicen que configure un par de claves públicas o privadas en mi cliente y servidor. Pensé que las claves públicas y privadas eran un elemento fundamental de cómo funcionaba SSH. ¿Cómo puede el SFTP (que he leído se basa en SSH) funcionar sin un par de claves pública y privada (o está por defecto en un modo inseguro como FTP en la situación)?

Originalmente, pensé que necesitaba crear estos pares para cada persona que quería conectarse al servidor y copiar manualmente el archivo de clave pública en la máquina del cliente.

EDIT =============================

No entendí que hay dos conjuntos de claves públicas / privadas en uso, una creada por el servidor y otra que el cliente podría crear. Inicialmente, pensé que eran el mismo par de claves pública / privada.

    
pregunta Hoytman 16.04.2014 - 16:17
fuente

3 respuestas

13

Respuesta corta: necesariamente hay un par de claves pública / privada en el servidor. puede haber un par de claves pública / privada en el cliente, pero el servidor puede elegir autenticar a los clientes con contraseñas,

SSH es un mecanismo de túnel genérico, en el que se transfieren algunos "datos de aplicación". Una de esas aplicaciones es el "shell remoto", que se utiliza para obtener un "terminal" abierto en un servidor, en el que se pueden ejecutar las aplicaciones del terminal. Otra aplicación distinta es el protocolo de transferencia de archivos conocido como SFTP. Desde el punto de vista de SSH, la aplicación que se utiliza es irrelevante. Esto significa que cualquier concepto de autenticación se aplica igualmente a SSH (la parte "shell remota") y SFTP.

El servidor DEBE tener un par de claves pública / privada. Esa clave se usa para la parte del túnel, por lo que un servidor usará el mismo par de claves para todos los protocolos aplicativos. La mayoría de los sistemas operativos similares a Unix (por ejemplo, Linux) crean un par de claves SSH cuando se instalan por primera vez, y lo usarán más adelante. Esto significa que no tiene que "crear una clave" cuando configura su servidor SSH para que también se use como SFTP: el servidor ya tiene una clave.

Un cliente puede tener un par de claves pública / privada si desea autenticarse basándose en esa clave; se trata de autenticación de cliente , es decir, de cómo el servidor se asegurará de que está hablando con el cliente correcto. La autenticación basada en contraseña y la autenticación basada en clave son los dos métodos más comunes (algunos servidores están configurados para requerir ambos ). Por definición, solo la autenticación basada en clave requiere que el cliente almacene y use un par de claves propio.

    
respondido por el Tom Leek 16.04.2014 - 16:43
fuente
3

Puede funcionar porque el par de llaves ya existe en el servidor. El servidor SSH tiene las claves necesarias para proteger la información en tránsito. El servidor SSH utilizará una clave pública, ese dispositivo cliente usará la clave pública para cifrar la información enviada al servidor. El servidor luego usa su clave privada para descifrar esa información y el proceso.

Consulte enlace

    
respondido por el David George 16.04.2014 - 16:35
fuente
3

En SSH, tienes dos conjuntos de pares de claves: uno para el servidor y otro para los usuarios.

El par de claves del servidor es obligatorio, pero generalmente se genera durante la instalación del servidor: todo lo que tiene que hacer es validar la huella digital de la clave pública del servidor (un simple hash) y, siempre que la clave no se modifique, su cliente se conectará silenciosamente.

Sin embargo, el par de claves que utiliza para la autenticación puede ser opcional (o no permitido) según el método de autenticación que haya decidido permitir o requerir en el servidor.

El artículo de Wiki en SSH tiene muchos detalles jugosos pero, para resumir, hay 4 mecanismos de autenticación compatibles:

  • Contraseña requiere una combinación de nombre de usuario y contraseña
  • Clave pública requiere acceso a la parte privada de la clave pública que utiliza para la autenticación (normalmente, configura el par de claves en el cliente y solo actualiza la configuración del servidor con su clave pública).
  • Teclado interactivo se usa principalmente para contraseñas de un solo uso y similares.
  • GSSAPI , un marco utilizado para implementar otro esquema de autenticación, generalmente para implementar inicio de sesión único (sobre todo Kerberos )
respondido por el Stephane 16.04.2014 - 16:45
fuente

Lea otras preguntas en las etiquetas