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 -O
funcionó.
La -O
opció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.