Cómo enviar ficheros desde un equipo con Windows 10 y Windows 11 a un equipo con Linux. En este ejemplo usaremos Linux Ubuntu 20, pero el procedimiento sirve para cualquier otra versión y distribución de Linux: Debian, Red Hat, CentOS, Suse, Fedora, Mint, … Realizamos la transferencia de ficheros sin instalar software de terceros, usaremos el comando scp. Explicamos cómo enviar ficheros de Windows a Linux sin contraseña, con clave pública/privada.

Requisitos para enviar ficheros de Windows a Linux

En este procedimiento no necesitaremos software de terceros, ya que usaremos el comando scp. Este comando viene ya preinstalado en Windows 10 y Windows 11, incluso en versiones anteriores Windows 7 y Windows 8.

Por ello en el equipo Windows no hay requisitos y esa es la ventaja principal de este método de transferencia de ficheros. En el caso del equipo Linux, únicamente necesitaremos tener el puerto SSH (normalmente el 21) abierto en el cortafuegos para recibir peticiones. Por lo demás tampoco hay requisitos.

El comando scp utiliza el protocolo SSH para cifrar la información, por lo que la primera vez que lo usemos nos preguntará si queremos generar una clave (fingerprint), para establecer una relación de confianza entre el cliente Windows y el equipo Linux. No hay que hacer nada, sólo responder «yes», como explicaremos en el siguiente punto.

Si queremos estar seguros de que establecemos la conexión con el equipo Linux correcto, para evitar ataques de tipo Man in the Middle (Ataque de intermediario), podremos revisar la clave (fingerprint) del equipo Linux, ejecutando en este equipo el comando:

La clave pública que nos muestre debe coincidir con la que nos muestre el comando scp (que veremos en el punto siguiente):

Requisitos para enviar ficheros de Windows a Linux

Si no existe el fichero de clave pública podremos generarlo en Linux con el comando:

Este comando generará una clave privada y una pública, podremos elegir la ubicación de ambos ficheros.

Requisitos para enviar ficheros de Windows a Linux

Habrá generado un fichero con la clave privada llamado, en nuestro caso, id_rsa_pcalonso y uno con la clave pública llamado id_rsa_pcalonso.pub. El fichero con la clave privada nunca debe exponerse públicamente, el fichero con la clave pública podremos copiarlo al equipo Linux para su uso.

Necesitaremos, evidentemente, un usuario y contraseña del equipo Linux con permisos suficientes para escribir en la carpeta que consideremos.

Copiar ficheros de Windows a Linux por comando de forma rápida sin software de terceros con scp

Para copiar un fichero de Windows a Linux abriremos una ventana de MS-DOS (símbolo de sistema) en el equipo Windows, y ejecutaremos el siguiente comando:

Donde:

  • C:\Users\alonso\Desktop\cb\ComunidadBikerMTB.exe: ruta y nombre del fichero del equipo Windows que transferiremos a Linux.
  • alonso@192.168.1.11:
    • alonso: nombre del usuario de Linux con permisos suficientes para escribir en la carpeta de destino Linux.
    • 192.168.1.11: dirección IP del equipo con Linux que recibirá el fichero.
  • /home/alonso/Escritorio: carpeta del equipo Linux donde se copiará el fichero.

La primera vez que transfiramos un fichero del equipo Windows a Linux, nos preguntará si queremos generar la clave (fingerprint) para establecer una «confianza» entre el equipo Windows y el equipo Linux. Revisaremos que la clave coincide con la obtenida en el equipo Linux y responderemos «yes»:

Copiar ficheros de Windows a Linux por comando de forma rápida sin software de terceros con scp

A partir de ahora, cualquier nuevo fichero que transfiramos de Windows a Linux, no nos preguntará sobre la generación de la clave, al quedar almacenada:

Copiar ficheros de Windows a Linux por comando de forma rápida sin software de terceros con scp

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp

Para que no nos pida contraseña en la ejecución del comando scp, para cuando cuando queramos automatizar tareas de transferencia de ficheros, tanto entre equipos Windows – Linux como Linux – Linux o Windows – Windows, necesitaremos generar un par de claves pública/privada y transferir la clave pública al equipo remoto desde el cliente.

En el equipo Windows, desde una ventana de MS-DOS (Símbolo de sistema), ejecutaremos el siguiente comando:

Nos solicitará el nombre del fichero donde se generarán las claves pública y privada, por defecto en la carpeta del usuario, en la subcarpeta .ssh y con el nombre de fichero id_rsa. También nos solicitará una palabra de paso, pulsaremos INTRO sin introducir palabra de paso:

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña)

El comando anterior habrá generado dos ficheros:

  • id_rsa: fichero con la clave privada. No debe publicarse ni exponerse.
  • id_rsa.pub: fichero con la clave pública.
Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp

Enviaremos el fichero de clave pública id_rsa.pub al equipo Linux. Podremos hacerlo con el comando scp (como hemos explicado en el punto anterior), con el comando:

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp

Realizaremos una prueba de conexión al equipo Linux con el comando ssh:

Una vez establecida la conexión, tendremos un shell del equipo Linux en Windows, podremos ejecutar cualquier comando en el equipo Linux desde el equipo Windows, por ejemplo:

Ahora copiaremos el contenido del fichero /home/alonso/.ssh/id_rsa.pub al fichero .ssh/authorized_keys del equipo Linux, con el comando:

Estableceremos la seguridad para el fichero .ssh/authorized_keys con:

Y eliminaremos el fichero /home/alonso/.ssh/id_rsa.pub que ya no necesitamos:

Saldremos del modo SSH del shell de Windows con:

Volviendo a la línea de comandos del Símbolo de sistema de Windows:

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp

Comprobaremos que funciona el envío de ficheros desde Windows a Linux con scp sin usar contraseña:

Vemos que ya funciona perfectamente y podremos transferir ficheros al equipo Linux desde Windows sin intervención, sin introducir contraseñas, al haber establecido una relación de confianza entre ambos equipos con las claves pública/privada.

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp

En el fichero C:\Users\alonso.ssh\known_hosts se habrá creado el equipo host remoto de Linux (IP y clave):

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp

En el equipo Linux también se habrá generado el fichero know_hosts:

Transferir ficheros de Windows a Linux sin que nos solicite contraseña (sin contraseña) con scp