La solicitud de scp exec falló en el canal 0

La solicitud de scp exec falló en el canal 0

Estoy intentando transferir archivos SCP de una computadora a otra, pero obtengo

La solicitud ejecutiva falló en el canal 0".

Sin embargo, cuando uso SSH, puedo acceder a la máquina sin problemas. Estoy usando la función SCP en Cygwin si eso ayuda.

Lo que encontré al buscar en línea hablaba del archivo ".bashrc", sin embargo, el único que encontré es "bash.bashrc".

Este es el comando que he usado:

scp /filelocation/file user@hostname:/folderlocation

También probé con la dirección IP en lugar del nombre de host, pero obtuve el mismo resultado.

Verifiqué que el sitio remoto tenga el comando SCP.

Respuesta1

Esto me sucedió al intentar enviar algunos archivos a mi Synology NAS.

Correr scp -Ofuncionó.

La -Oopción utiliza el protocolo SCP heredado para transferencias de archivos en lugar del protocolo SFTP.

Respuesta2

Para ver el archivo .bashrc (y otros archivos que comienzan con un punto), debe hacer

ls -a

La solución sencilla es cambiar el nombre de los archivos .profile, .bashrc, .login, .bash_profile para que no se incluyan. Estos se conocen como archivos de inicio del shell.

Si su scp ahora funciona, la respuesta está en uno de esos archivos.

Básicamente, uno de los archivos de inicio del shell está devolviendo el resultado y eso arruina la negociación SSL en curso.

Podría ser tan simple como enviar secuencias de escape especiales para configurar el título de la ventana. Otro culpable es el comando stty.

Desea enviar una salida envolvente al terminal sólo cuando haya iniciado sesión con

if tty -s >/dev/null 2>&1; then
    # here if have a real terminal associated to send stty commands 
    # or other special escape sequences to terminal
fi

Respuesta3

estoy de acuerdo conluz estroboscópicaque este error suele deberse a la salida de los archivos de inicialización de bash .bashrc (y otros).

Sin embargo, existen algunas formas integradas en bash de probar shells interactivos:guía avanzada de scripting bashreferencia,fallo del servidorreferencia.

Lo que he visto con más frecuencia es probar $PS1 para saber cuándo realizar la salida:

if [ "$PS1" ]; then
    echo "some message"
fi

Respuesta4

Dado que no todos los clientes (o cuentas de clientes) admitirán el uso de ssh para alterar los scripts de inicio de sesión, una alternativa válida para probar/usar sería sftp en lugar de scp.

información relacionada