Запрос scp exec не выполнен на канале 0

Запрос scp exec не выполнен на канале 0

Я пытаюсь перенести файлы SCP с одного компьютера на другой, но получаю

запрос exec не выполнен на канале 0".

Однако, когда я использую SSH, я могу получить доступ к машине без проблем. Я использую функцию SCP в Cygwin, если это поможет.

При поиске в Интернете я обнаружил файл «.bashrc», однако единственный файл, который я нашел, — это «bash.bashrc».

Вот команда, которую я использовал:

scp /filelocation/file user@hostname:/folderlocation

Я также пробовал использовать IP-адрес вместо имени хоста, но результат тот же.

Я проверил, что на удаленном сайте есть команда SCP.

решение1

Это произошло со мной, когда я пытался отправить некоторые файлы на Synology NAS.

Бег scp -Oпомог.

Опция -Oиспользует устаревший протокол SCP для передачи файлов вместо протокола SFTP.

решение2

Чтобы увидеть файл .bashrc (и другие файлы, начинающиеся с точки), вам нужно сделать

ls -a

Простой способ обойти эту проблему — переименовать файлы .profile, .bashrc, .login, .bash_profile, чтобы они не были включены. Они известны как файлы запуска оболочки.

Если ваш scp теперь работает, ответ кроется в одном из этих файлов.

По сути, один из файлов запуска оболочки отправляет выходные данные обратно, и это нарушает процесс согласования SSL.

Это может быть так же просто, как отправка специальных escape-последовательностей для установки заголовка окна. Другим виновником является команда stty.

Вы хотите выводить вывод на терминал только при входе в систему с помощью

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

решение3

я согласен симпульсная лампачто эта ошибка часто возникает из выходных данных файлов инициализации bash .bashrc (и других).

Однако есть несколько встроенных в bash способов проверки интерактивных оболочек:расширенное руководство по написанию bash-скриптовссылка,ошибка серверассылка.

Чаще всего я видел, как проверяют $PS1 на предмет того, когда следует выполнять вывод:

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

решение4

Поскольку не все клиенты (или клиентские учетные записи) поддерживают использование ssh для вмешательства в скрипты входа, допустимой альтернативой try/use будет sftp вместо scp.

Связанный контент