Configure su servidor para usar el servidor sftp interno agregando la siguiente directiva a /etc/ssh/sshd_config
:
Subsystem sftp internal-sftp
De esa forma, no usará el shell del usuario para iniciar el programa del servidor sftp.
"Mensaje recibido demasiado largo" significa que su cliente SFTP recibió datos incorrectos del servidor SFTP. La razón típica es que las secuencias de comandos de inicio de shell en el servidor (.bashrc, .profile, .cshrc, etc.) están produciendo algún resultado y su cliente SFTP está tratando de analizar ese resultado como un mensaje SFTP. Puede verificar esto ejecutando el comando:
ssh [email protected] 'echo hello'
Si esto produce cualquier salida que no sea "hola", entonces esa salida probablemente evitará que SFTP o SCP funcionen correctamente.
Como en la respuesta de salva, puede evitar esto configurando el servidor SSH para usar internal-sftp para sesiones SFTP. Esto evita iniciar su shell para sesiones SFTP. Esto no ayudará con SCP ni con otros programas como git o rsync que se ejecutan a través de ssh.
Las otras formas de solucionar esto son revisar los comandos de inicio de shell, descubrir qué está produciendo el resultado y evitar que eso suceda durante las sesiones SSH no interactivas. Un consejo es probar un TTY antes de ejecutar comandos que produzcan resultados:
if [ -t 1 ]; then
# standard output is a TTY
...
fi