linux-scp 遠端拷貝報錯原因

安全劍客發表於2018-11-16
剛拿到一臺重灌後的伺服器,遠端ssh都正常,但是一scp拷貝東西就報錯:
本地確定是有scp命令的,而且如果是本地沒有scp不會報後面那句lost connection,因此就是遠端沒有scp這個命令。因此在遠端伺服器上裝上openssh-clients就可以了。那這是為什麼呢?

scp原理

scp是rcp(remote file copy)在ssh上面的實現,rcp和scp在協議層面上沒有區別, 不同在於傳輸時使用了rlogin。

scp會先解析命令列引數,然後開啟一個到遠端伺服器的連線, 再通過這個連線在遠端另起一個scp程式。遠端的scp程式可以是源端,也可以是目的地(看你拷貝檔案的方向)。

資料提供者, 源頭, 以源模式執行的scp程式後面會被稱作是源端;

資料的目的地, 歸宿, 以宿模式執行的scp程式後面會被稱作是宿端。

源端讀取檔案並通過SSH連線傳送到另一端,宿端通過SSH連線接收檔案。

源模式和宿模式是通過-f (from)和 -t (to)這兩個隱藏選項來啟動的。

這兩個引數僅供命令內部使用, 因此沒寫進文件。除了這兩個隱藏引數外, 還有另一個隱藏引數-d, 表示複製的物件是一個目錄而不是檔案。
linux-scp 遠端拷貝報錯原因linux-scp 遠端拷貝報錯原因
linux-scp 遠端拷貝報錯原因linux-scp 遠端拷貝報錯原因

總結

從上面的原理就可以看出,ssh只是提供一個通道,實際拷貝東西的還是scp之間的通訊,因此本地和遠端都必須有scp的命令,否則無法遠端拷貝檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2220295/,如需轉載,請註明出處,否則將追究法律責任。

相關文章