我正在嘗試將 SCP 檔案從一台計算機傳輸到另一台計算機,但是我得到
執行請求在通道 0 上失敗」。
然而,當我使用 SSH 時,我可以毫無問題地訪問機器。我正在使用 Cygwin 中的 SCP 功能,如果有幫助的話。
我在網上搜索時發現談到“.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 文件,這樣它們就不會被包含在內。這些稱為 shell 啟動檔案。
如果您的 scp 現在可以工作,答案就在這些文件之一中。
基本上,shell 啟動檔案之一正在傳送回輸出,這會擾亂正在進行的 ssl 協商。
它可以像發送特殊的轉義序列來設定視窗標題一樣簡單。另一個罪魁禍首是 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
我同意頻閃燈此錯誤通常來自 .bashrc(和其他)bash 初始化檔案的輸出。
不過,有一些 bash 內建方法可以測試互動式 shell:進階 bash 腳本編寫指南參考,伺服器故障參考。
我最常看到的是測試 $PS1 何時進行輸出:
if [ "$PS1" ]; then
echo "some message"
fi
答案4
由於並非所有客戶端(或客戶端帳戶)都支援使用 ssh 來幹擾登入腳本,因此嘗試/使用的有效替代方法是 sftp 而不是 scp。