scp 返回“意外“ 错误

scp 返回“意外“ 错误

我正在尝试将scp文件从服务器传输到本地计算机,但是出现了以下错误:

protocol error: unexpected <newline>

这是我的语法:

scp user@server:/path/to/file .

它在此服务器上不起作用,但后来我在我的另一台服务器上尝试了相同的命令,所以我只能假设这是我的服务器的问题而不是命令的语法的问题scp

有任何想法吗?

答案1

您的某个登录脚本 (.bashrc/.cshrc/etc.) 不该向终端输出数据,而向终端输出数据。这导致 scp 在连接并准备复制时出错,因为它开始接收它不期望的额外数据。删除此处生成的输出。

您可以在 bashrc 中使用以下代码来检查您的终端是否是交互式的并且仅输出文本。其他 shell 也存在等效的东西:

if shopt -q login_shell; then
    [any code that outputs text here]
fi

答案2

找到解决方案了。我的 .bashrc 文件和 .bash_logout 设置为每当我登录/退出时向我回显信息。显然,回显的新行给 scp 带来了一些问题。我注释掉了我的 echo 语句,这招奏效了!

答案3

我遇到了类似的问题。原因正是如此:我的 .bashrc 中有一个“echo “some text” ”命令,用于打印代理的状态。而这个“echo “some text” ”导致 scp 失败。因此,通过删除 .bashrc 文件中的“echo”,我可以使用 scp 传输文件。

相关内容