Configura il tuo server per utilizzare il server sftp interno aggiungendo la seguente direttiva a /etc/ssh/sshd_config
:
Subsystem sftp internal-sftp
In questo modo, non utilizzerà la shell utente per avviare il programma del server sftp.
"Messaggio ricevuto troppo lungo" significa che il tuo client SFTP ha ricevuto dati errati dal server SFTP. Il motivo tipico è che gli script di avvio della shell sul server (.bashrc, .profile, .cshrc, ecc.) stanno producendo un output e il tuo client SFTP sta tentando di analizzare quell'output come un messaggio SFTP. Puoi verificarlo eseguendo il comando:
ssh [email protected] 'echo hello'
Se questo produce un output diverso da "ciao", allora quell'output probabilmente impedirebbe a SFTP o SCP di funzionare correttamente.
Come nella risposta di salva, puoi evitarlo impostando il server SSH in modo che utilizzi internal-sftp per le sessioni SFTP. Ciò evita di avviare la shell per le sessioni SFTP. Questo non aiuterà con SCP o con altri programmi come git o rsync che girano attraverso ssh.
L'altro modo per risolvere questo problema è passare attraverso i comandi di avvio della shell, capire cosa sta producendo l'output e impedire che ciò accada durante le sessioni SSH non interattive. Un suggerimento è quello di testare un TTY prima di eseguire comandi che producono output:
if [ -t 1 ]; then
# standard output is a TTY
...
fi