正常使用 ssh 连接远端是可以的,如:
# dev 为远端 .ssh/config 配置
$ ssh dev
Last login: Thu Nov 24 15:23:10 2016 from 192.168.xx.xx
Welcome
但是使用指令scp远端文件却显示错误:
$ scp dev:ssh.zip ./
Welcome
# 并没有将文件 cp 下来
查了一下发现,scp
的过程是先隐藏使用 ssh
登录到远端,然后再执行 cp
的操作,上面的 “Welcom” 是在 ssh
登录时 shell startup script
(比如 profile , bashrc)自动执行过程中产生的内容输出,当我在 .bashrc
中找到这句 echo "Welcome"
注释掉后再执行 scp
顺利的将文件 拷贝了下来,由此推测:
scp / sftp
会把这些 echo
的内容也传回来,并认作协议包的一部分进行解析,导致解析错误,最终导致文件拷贝失败。
所以使用 scp
指令时,ssh
登录不能出现 echo
输出。