10

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

Не удалось выполнить запрос exec на канале 0 ".

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

То, что я нашел при поиске в Интернете, говорило о файле ".bashrc", однако единственный, что я нашел, это "bash.bashrc".

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

scp /filelocation/file user@hostname:/folderlocation

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

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

2 ответа2

0

Чтобы увидеть файл .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
0

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

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

Чаще всего я проверял $ PS1 на время выполнения вывода:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .