scp 執行請求在頻道 0 上失敗

scp 執行請求在頻道 0 上失敗

我正在嘗試將 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。

相關內容