通过 ssh 使用 scp 时出现错误消息

通过 ssh 使用 scp 时出现错误消息

我不确定发生了什么,但最近我似乎无法从远程服务器将任何文件复制到本地。我尝试从本地进行 rsync 并收到以下错误消息:

 mut@mylocalcomputer:~$ rsync -chavzP --stats [email protected]:/home/users/mut/thedirectoryIneed /User/mut/
 [email protected]'s  password: 
 protocol version mismatch -- is your shell clean?
 (see the rsync man page for an explanation)
 rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-42/rsync  /compat.c(61) [receiver=2.6.9] 

因此我操作 rsync 并按照说明使用以下命令诊断问题(输入本地命令行):

ssh [email protected] /bin/true > out.dat

输入密码,但没有得到任何返回 - 它只是弹出一个新的提示)。

(2) 因此我尝试这样做scp,但每次从本地scp传输时ssh,我都会得到以下输出,显示文件类型、大小、权限和文件名,但没有其他内容:

 C0644 183 fileineedfromremoteserver.cpp

但文件没有复制过来(或者至少我在电脑的任何地方都找不到它)。

对于问题可能出在哪里,或者我还可以尝试什么,有什么建议吗?

注意:我的本地是 OSX(BSD) 上的默认终端 CLI,服务器是 GNU linux。在从服务器复制文件之前,我从未遇到过任何问题,我能想到的唯一变化是,在某个时候,我输入了命令来从本地生成 SSH 密钥(尝试自动登录服务器而不必每次都输入密码,但失败了)。不过,我怀疑这与它有什么关系。

答案1

我已经很久没有见过这个错误了,但据我所知,当我看到这个错误时,这是​​由于错误的 shell rc 文件中存在某些内容,导致登录时输出文本。

有问题的文件特定于您正在使用的 shell,但您可以按照以下方法针对 bash 进行修复。

登录远程系统 (mambo.m66.com) 上的帐户后,运行以下命令:( . .bashrc请注意,第一个句号不是拼写错误)。如果您看到任何运行该命令时的输出,您应该将.bashrc文件中的命令移动到.bash_profile中。

abydos:~ jonv$ touch sourcefile
abydos:~ jonv$ echo 'echo This should work.' > .bash_profile
abydos:~ jonv$ rsync jonv@localhost:sourcefile destfile
abydos:~ jonv$ echo 'echo This should NOT work.' > .bashrc
abydos:~ jonv$ rsync jonv@localhost:sourcefile destfile
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-42/rsync/compat.c(61) [receiver=2.6.9]

如果您想进一步了解,网络上有很多资源。您可以搜索“.bashrc vs .bash_profile”,得到很多。

相关内容