安全複製協定
SCP是一種基於
BSDRCP協定的
網路傳輸協定,支持同一個網路上主機之間傳輸檔案。SCP使用
Secure Shell(SSH)完成數據傳輸,並使用同時用它進行身份認證,從而確保數據傳輸時的
真實性和
保密性。客戶端可以向伺服器傳送(上傳)檔案,可選包含其基本屬性(許可權、時間戳)。客戶端也可以請求(下載)一個伺服器的檔案或目錄。SCP默認通過
TCP連線埠22運行。如同RCP,沒有
RFC定義該協定的細節。
功能
正常來說,一個客戶端發起到遠程主機的SSH連線,並請求在遠程伺服器上啟動一個SCP
進程。遠程SCP進程可以以兩種模式之一操作:
對大多數SCP客戶端來說,源模式通常使用-f標識(意為from)觸發,而槽模式用-t(意為to)觸發。這些標誌是在內部使用,沒有在SCP原始碼之外留有文檔。
遠程到遠程模式
在過去,遠程到遠程的安全複製中,SCP客戶端打開一個到源主機的SSH連線,並請求它打開到目的地的SCP連線。(遠程到遠程模式不支持打開兩個SCP連線,並使用始發客戶端作為一個中介)。應格外注意的是,當在密碼或鍵盤互動認證模式下操作時,SCP不能用於遠程的從源複製到目的地,因為這將向源顯示目的地伺服器的認證憑證。但是,使用基於密鑰或
GSSAPI的方法可以規避此點,因為不需要用戶輸入。
最近以來,遠程到遠程模式支持通過發起轉移的客戶端路由流量,即使它是轉移的第三方。這種方法下,授權憑據必須僅駐留在發起客戶端上,即第三方。
有關shell配置檔案的問題
SCP不希望與ssh登錄的shell用文本通信。這是由於文本傳輸的ssh配置檔案(例如.bashrc檔案中的echo "Welcome")會被解釋為一條錯誤訊息,並且一個空行(echo "")將導致scp死鎖為等待錯誤訊息完成。
安全複製(遠程檔案複製程式)
SCP程式是將SCP協定實現為服務守護程式或客戶端的軟體工具。它是執行安全複製的程式。SCP伺服器程式通常與SCP客戶端是相同的程式。SCP伺服器軟體可以普通機器或
防火牆配置為僅接受22連線埠上的SCP流量的極高安全標準的機器上運行。
使用最廣泛的SCP程式可能是
命令行界面的scp程式,這在大多數SSH實現中提供。scp程式是rcp命令的安全模擬。scp程式是所有想提供SCP服務的SSH伺服器的必備,scp功能也作為SCP伺服器。
通常來說,scp程式的語法類似cp(copy)的語法。
複製檔案到主機:
scp SourceFile user@host:directory/TargetFile
從主機複製檔案:
scp user@host:directory/SourceFile TargetFilescp -r scp user@host:directory/SourceFolder TargetFolder
注意,如果遠程主機使用非默認連線埠22,可以在命令中指定。例如,從主機複製一個檔案。
scp -P 2222 user@host:directory/SourceFile TargetFile
由於
安全複製協定僅實現檔案傳輸,
GUI的SCP客戶端很少,因為實現它需要額外的功能(至少要有
目錄列出)。例如,
WinSCP默認為SFTP協定。即使在SCP模式下操作,WinSCP等客戶端通常也不是純粹的SCP客戶端,因為他們必須用其他手段實現額外的功能(例如ls命令)。這反過來帶來了平台依賴性問題。
SFTP客戶端是更全面的通過SSH管理檔案的工具。