scp返回“意外的<newline>”错误


11

我正在尝试将scp文件从服务器发送到本地计算机,但这给了我这个错误:

protocol error: unexpected <newline>

这是我的语法:

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

它在此服务器上不起作用,但是随后我在另一台服务器上尝试了相同的命令,因此我只能认为这与我的服务器有问题,而不是该scp命令的语法。

有任何想法吗?


~/.bashrc在服务器上发布您的信息。
量子

感谢您的帮助。在看到您的帖子之前,我已经编辑了.bashrc。问题是我里面有一个echo语句。谢谢您的帮助!
srchulo 2011年

@Miles,我尝试过,但我必须等待8个小时,因为我的声誉不到100。我将在该时间到后将其发布为答案。
srchulo 2011年

仅供参考,我遇到了这个问题,并且... <sheepish>我的scp命令不正确</ sheepish>。因此,可能就是这样。
ognockocaten

Answers:


19

您的登录脚本之一(.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语句,就成功了!


-1

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


1
这听起来与七年前发布的其他两个答案没有什么不同。
kasperd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.