安全複製(英語:secure copy,縮寫作 SCP)是指在本地主機與遠端主機或者兩台遠端主機之間基於Secure Shell(SSH)協定安全地傳輸電腦檔案[1]。「SCP」通常指安全複製協定或者程式本身[2]

安全複製協定

編輯

SCP是一種基於BSD RCP英語Rcp (Unix)協定的網絡傳輸協定[3] 支援同一個網絡上主機之間傳輸檔案。SCP使用Secure Shell(SSH)完成數據傳輸,並使用同時用它進行身份認證,從而確保數據傳輸時真實性保密性。客戶端可以向伺服器傳送(上載)檔案,可選包含其基本屬性(權限、時間戳)。客戶端也可以請求(下載)一個伺服器的檔案或目錄。SCP預設通過TCP埠22執行。如同RCP,沒有RFC定義該協定的細節。

功能

編輯

正常來說,一個客戶端發起到遠端主機的SSH連接,並請求在遠端伺服器上啟動一個SCP行程。遠端SCP行程可以以兩種模式之一操作:

  • 源模式,讀取檔案(通常從磁碟)並將其傳送回客戶端。
  • 槽(sink)模式,接收客戶端傳送的檔案,並將它們寫入到遠端主機(通常到磁碟)。

對大多數SCP客戶端來說,源模式通常使用-f標識(意為from)觸發,而槽模式用-t(意為to)觸發。這些標誌是在內部使用,沒有在SCP原始碼之外留有文件。

遠端到遠端模式

編輯

在過去,遠端到遠端的安全複製中,SCP客戶端打開一個到源主機的SSH連接,並請求它打開到目的地的SCP連接。(遠端到遠端模式不支援打開兩個SCP連接,並使用始發客戶端作為一個中介)。應格外注意的是,當在密碼或鍵盤互動認證模式下操作時,SCP不能用於遠端的從源複製到目的地,因為這將向源顯示目的地伺服器的認證憑證。但是,使用基於金鑰或GSSAPI英語GSSAPI的方法可以規避此點,因為不需要用戶輸入。

最近以來,遠端到遠端模式支援通過發起轉移的客戶端路由流量,即使它是轉移的第三方。這種方法下,授權憑據必須僅駐留在發起客戶端上,即第三方。[需要解釋]

有關shell設定檔的問題

編輯

SCP不希望與ssh登入的shell用文字通訊。這是由於文字傳輸的ssh設定檔(例如.bashrc檔案中的echo "Welcome")會被解釋為一條錯誤訊息,並且一個空行(echo "")將導致scp死結為等待錯誤訊息完成。

安全複製(遠端檔案複製程式)

編輯

SCP程式是將SCP協定實現為服務守護程式或客戶端的軟件工具。它是執行安全複製的程式。SCP伺服器程式通常與SCP客戶端是相同的程式。SCP伺服器軟件可以普通機器或防火牆組態為僅接受22埠上的SCP流量的極高安全標準的機器上執行。[4]

使用最廣泛的SCP程式可能是命令列介面scp程式,這在大多數SSH實現中提供。scp程式是rcp命令的安全模擬。scp程式是所有想提供SCP服務的SSH伺服器的必備,scp功能也作為SCP伺服器。

部分SSH實現提供scp2程式,這使用SFTP協定而非SCP,但提供與相同的命令列介面scpscp此時通常符號連結scp2

通常來說,scp程式的語法[5]類似cp (copy)的語法:

複製檔案到主機:

scp SourceFile user@host:directory/TargetFile

從主機複製檔案:

scp user@host:directory/SourceFile TargetFile
scp -r user@host:directory/SourceFolder TargetFolder

注意,如果遠端主機使用非預設埠22,可以在命令中指定。例如,從主機複製一個檔案。

scp -P 2222 user@host:directory/SourceFile TargetFile

由於安全複製協定僅實現檔案傳輸,GUI的SCP客戶端很少,因為實現它需要額外的功能(至少要有目錄列出)。例如,WinSCP預設為SFTP協定。即使在SCP模式下操作,WinSCP等客戶端通常也不是純粹的SCP客戶端,因為他們必須用其他手段實現額外的功能(例如ls命令)。這反過來帶來了平台依賴性問題。

SFTP客戶端是更全面的通過SSH管理檔案的工具。

參考文獻

編輯
  1. ^ Linux and Unix scp command. [4 August 2015]. (原始內容存檔於2018-02-21). 
  2. ^ Pechanec, Jan. How the SCP protocol works. Jan Pechanec's weblog. Oracle. [4 August 2015]. (原始內容存檔於2015-10-11). 
  3. ^ scp - FreeBSD (history section). [25 June 2012]. (原始內容存檔於2021-02-25). 
  4. ^ SCP Server Installation and Configuration. [17 June 2016]. (原始內容存檔於2016-11-27). 
  5. ^ "scp(1) - Linux man page" http://linux.die.net/man/1/scp頁面存檔備份,存於互聯網檔案館

參見

編輯