Si en breve, cuando envío mis archivos a VPS desde Ubuntu PC mediante Rsync, todo va bien, sin embargo, si hago lo mismo desde Windows, aparece el error
rsync: conexión cerrada inesperadamente (0 bytes recibidos hasta ahora)
[Receptor] Error de rsync: error en el flujo de datos del protocolo rsync (código 12) en io.c(235) [Receptor=3.1.3]
Aunque a diferencia de Linux, Rsync no está instalado de forma predeterminada para Windows, lo instalé en mi PC con Windows.
Datos ambientales
- PC local n.º 1: Windows 10
- PC local n.º 2: Ubuntu 20.04.5
- VPS: Ubuntu 20.04
Preparativos
He inicializado el VPS con Ubuntu claro. Para eliminar algunas variables de las ecuaciones, he hecho algunas cosas que no deberían hacerse en un VPS real (no experimental como en mi caso) por motivos de seguridad.
- Enviaré los datos usando la cuenta raíz.
- No usaré la SLL
Además, he creado el/var/www/ejemplo.comdirectorio en VPS para evitar el error de no poder sincronizar los datos porque no se ha creado el directorio de destino.
Objetivo
Presentar el contenido de06-ProducciónConstruccióndirectorio al VPS.
Flujo del experimento
En la terminal de Windows, ingrese
rsync -azve ssh --progress 06-ProductionBuild [email protected]:/var/www/example.com
Se ha solicitado la contraseña. Después de ingresar la contraseña obtuve:
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
Si ingresé la contraseña incorrecta, el error fue Permission denied, please try again
.
Ahora el mismo comando desde Ubuntu PC:
Todo estuvo bien.
Por favor dame algunas pistas.
Probé desde WSL, estuvo bien. Parece que algo anda malRsync desde Windows.
Respuesta1
Aparentemente, esto se debe a que estaría utilizando el ssh
programa "sistema" (compilación nativa de OpenSSH de Microsoft) cuando especifica solo -e ssh
. (Más precisamente, probablemente se deba a que la precedencia de RUTA del bin
directorio de instalación de (cw)rsync es menor que la otra ruta en cuestión).
En mi prueba, la solución más sencilla es especificar -e /bin/ssh
, en su lugar, cuál hará que rsync
se utilice el (cygwin) ssh
que viene con él. (La "magia" de cygwin debería resolver automáticamente la raíz del camino por usted, chocolateado o no).
El crédito (de descubrir la causa) va al comentario.aquí, aunque el enfoque que allí se ofrece parece innecesariamente torpe. (Bueno, a menos que tenga motivos para utilizar la ssh
versión de Microsoft).
EDITAR: en realidad, la explicación dada en el enlace correcto no me parece exactamente cierta. En mi prueba, el "sistema" ssh se usaría known_hosts
en una ubicación diferente, pero también me solicita que agregue el servidor a la lista cuando intento conectarme con él por primera vez y creé el suyo propio known_hosts
con éxito. Tampoco me preguntó en el intento posterior, por lo que aparentemente PUEDE encontrar el suyo propio para volver a leer. Por lo tanto, no tengo idea de cómo le ayudó su sugerencia y, de todos modos, especificar la opción/ruta no funciona para mí.