«Полученное сообщение слишком длинное» означает, что ваш SFTP-клиент получил неверные данные с SFTP-сервера. Типичная причина в том, что сценарии запуска оболочки на сервере (.bashrc, .profile, .cshrc и т. Д.) Выдают какой-то вывод, и ваш SFTP-клиент пытается проанализировать этот вывод как сообщение SFTP. Вы можете проверить это, выполнив команду:
ssh user@remote 'echo hello'
Если при этом выдается какой-либо вывод, отличный от «hello», то этот вывод, вероятно, помешает правильной работе SFTP или SCP.
Как и в ответе Сальвы, вы можете избежать этого, настроив сервер SSH на использование internal-sftp для сеансов SFTP. Это позволяет избежать запуска вашей оболочки для сеансов SFTP. Это не поможет с SCP.
Другой способ исправить это - выполнить команды запуска оболочки, выяснить, что производит вывод, и предотвратить это во время неинтерактивных сеансов SSH. Один совет - проверить TTY перед запуском команд, которые выдают результат:
if [ -t 1 ]; then
# standard output is a TTY
...
fi