複製鏈接
請複製以下鏈接發送給好友

安全複製

鎖定
安全複製(英語:Secure copy,縮寫SCP)是指在本地主機與遠程主機或者兩台遠程主機之間基於Secure Shell(SSH)協議安全地傳輸計算機文件。“SCP”通常指安全複製協議或者程序本身。
中文名
安全複製
外文名
Secure copy
簡    寫
SCP
定    義
指安全複製協議或者程序本身
性    質
協議
領    域
網絡安全

安全複製安全複製協議

SCP是一種基於BSDRCP協議的網絡傳輸協議,支持同一個網絡上主機之間傳輸文件。SCP使用Secure Shell(SSH)完成數據傳輸,並使用同時用它進行身份認證,從而確保數據傳輸時的真實性保密性。客户端可以向服務器發送(上傳)文件,可選包含其基本屬性(權限、時間戳)。客户端也可以請求(下載)一個服務器的文件或目錄。SCP默認通過TCP端口22運行。如同RCP,沒有RFC定義該協議的細節。 [1] 

安全複製功能

正常來説,一個客户端發起到遠程主機的SSH連接,並請求在遠程服務器上啓動一個SCP進程。遠程SCP進程可以以兩種模式之一操作:
  • 源模式,讀取文件(通常從磁盤)並將其發送回客户端。
  • 槽(sink)模式,接收客户端發送的文件,並將它們寫入到遠程主機(通常到磁盤)。
對大多數SCP客户端來説,源模式通常使用-f標識(意為from)觸發,而槽模式用-t(意為to)觸發。這些標誌是在內部使用,沒有在SCP源代碼之外留有文檔。 [1] 

安全複製遠程到遠程模式

在過去,遠程到遠程的安全複製中,SCP客户端打開一個到源主機的SSH連接,並請求它打開到目的地的SCP連接。(遠程到遠程模式不支持打開兩個SCP連接,並使用始發客户端作為一箇中介)。應格外注意的是,當在密碼或鍵盤交互認證模式下操作時,SCP不能用於遠程的從源複製到目的地,因為這將向源顯示目的地服務器的認證憑證。但是,使用基於密鑰或GSSAPI的方法可以規避此點,因為不需要用户輸入。
最近以來,遠程到遠程模式支持通過發起轉移的客户端路由流量,即使它是轉移的第三方。這種方法下,授權憑據必須僅駐留在發起客户端上,即第三方。 [1] 

安全複製有關shell配置文件的問題

SCP不希望與ssh登錄的shell用文本通信。這是由於文本傳輸的ssh配置文件(例如.bashrc文件中的echo "Welcome")會被解釋為一條錯誤消息,並且一個空行(echo "")將導致scp死鎖為等待錯誤消息完成。 [1] 

安全複製安全複製(遠程文件複製程序)

SCP程序是將SCP協議實現為服務守護程序或客户端的軟件工具。它是執行安全複製的程序。SCP服務器程序通常與SCP客户端是相同的程序。SCP服務器軟件可以普通機器或防火牆配置為僅接受22端口上的SCP流量的極高安全標準的機器上運行。
使用最廣泛的SCP程序可能是命令行界面的scp程序,這在大多數SSH實現中提供。scp程序是rcp命令的安全模擬。scp程序是所有想提供SCP服務的SSH服務器的必備,scp功能也作為SCP服務器。
部分SSH實現提供scp2程序,這使用SFTP協議而非SCP,但提供與相同的命令行界面scp。scp此時通常符號鏈接至scp2。
通常來説,scp程序的語法類似cp(copy)的語法。 [2] 
複製文件到主機:
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管理文件的工具。 [2] 
參考資料
  • 1.    Pechanec, Jan. How the SCP protocol works. Jan Pechanec's weblog. Oracle.
  • 2.    王惠坡, 曲志剛, 楊亞偉. 運用複製技術確保數據安全[J]. 鐵路計算機應用, 2003, 12(2):13-15.