正常使用 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 下來
查了一下發(fā)現(xiàn),scp 的過程是先隱藏使用 ssh 登錄到遠端,然后再執(zhí)行 cp 的操作,上面的 "Welcom" 是在 ssh 登錄時 shell startup script(比如 profile , bashrc)自動執(zhí)行過程中產(chǎn)生的內(nèi)容輸出,當我在 .bashrc 中找到這句 echo "Welcome" 注釋掉后再執(zhí)行 scp 順利的將文件 拷貝了下來,由此推測:
scp / sftp 會把這些 echo 的內(nèi)容也傳回來,并認作協(xié)議包的一部分進行解析,導致解析錯誤,最終導致文件拷貝失敗。
所以使用 scp 指令時,ssh 登錄不能出現(xiàn) echo 輸出。