安全復(fù)制(英語(yǔ):Secure copy,縮寫SCP)是指在本地主機(jī)與遠(yuǎn)程主機(jī)或者兩臺(tái)遠(yuǎn)程主機(jī)之間基于Secure Shell(SSH)協(xié)議安全地傳輸計(jì)算機(jī)文件。“SCP”通常指安全復(fù)制協(xié)議或者程序本身。
協(xié)議
SCP是一種基于BSDRCP協(xié)議的網(wǎng)絡(luò)傳輸協(xié)議,支持同一個(gè)網(wǎng)絡(luò)上主機(jī)之間傳輸文件。SCP使用Secure Shell(SSH)完成數(shù)據(jù)傳輸,并使用同時(shí)用它進(jìn)行身份認(rèn)證,從而確保數(shù)據(jù)傳輸時(shí)的真實(shí)性和保密性。客戶端可以向服務(wù)器發(fā)送(上傳)文件,可選包含其基本屬性(權(quán)限、時(shí)間戳)。客戶端也可以請(qǐng)求(下載)一個(gè)服務(wù)器的文件或目錄。SCP默認(rèn)通過(guò)TCP端口22運(yùn)行。如同RCP,沒有RFC定義該協(xié)議的細(xì)節(jié)。
遠(yuǎn)程
正常來(lái)說(shuō),一個(gè)客戶端發(fā)起到遠(yuǎn)程主機(jī)的SSH連接,并請(qǐng)求在遠(yuǎn)程服務(wù)器上啟動(dòng)一個(gè)SCP進(jìn)程。遠(yuǎn)程SCP進(jìn)程可以以兩種模式之一操作:
??源模式,讀取文件(通常從磁盤)并將其發(fā)送回客戶端。
??槽(sink)模式,接收客戶端發(fā)送的文件,并將它們寫入到遠(yuǎn)程主機(jī)(通常到磁盤)。
對(duì)大多數(shù)SCP客戶端來(lái)說(shuō),源模式通常使用-f標(biāo)識(shí)(意為from)觸發(fā),而槽模式用-t(意為to)觸發(fā)。這些標(biāo)志是在內(nèi)部使用,沒有在SCP源代碼之外留有文檔。
遠(yuǎn)程到遠(yuǎn)程模式
在過(guò)去,遠(yuǎn)程到遠(yuǎn)程的安全復(fù)制中,SCP客戶端打開一個(gè)到源主機(jī)的SSH連接,并請(qǐng)求它打開到目的地的SCP連接。(遠(yuǎn)程到遠(yuǎn)程模式不支持打開兩個(gè)SCP連接,并使用始發(fā)客戶端作為一個(gè)中介)。應(yīng)格外注意的是,當(dāng)在密碼或鍵盤交互認(rèn)證模式下操作時(shí),SCP不能用于遠(yuǎn)程的從源復(fù)制到目的地,因?yàn)檫@將向源顯示目的地服務(wù)器的認(rèn)證憑證。但是,使用基于密鑰或GSSAPI的方法可以規(guī)避此點(diǎn),因?yàn)椴恍枰脩糨斎搿?/p>
最近以來(lái),遠(yuǎn)程到遠(yuǎn)程模式支持通過(guò)發(fā)起轉(zhuǎn)移的客戶端路由流量,即使它是轉(zhuǎn)移的第三方。這種方法下,授權(quán)憑據(jù)必須僅駐留在發(fā)起客戶端上,即第三方。
有關(guān)shell配置文件的問(wèn)題
SCP不希望與ssh登錄的殼層用文本通信。這是由于文本傳輸?shù)膕sh配置文件(例如.bashrc文件中的echo"Welcome")會(huì)被解釋為一條錯(cuò)誤消息,并且一個(gè)空行(echo"")將導(dǎo)致scp死鎖為等待錯(cuò)誤消息完成。
遠(yuǎn)程文件復(fù)制程序
SCP程序是將SCP協(xié)議實(shí)現(xiàn)為服務(wù)守護(hù)程序或客戶端的軟件工具。它是執(zhí)行安全復(fù)制的程序。SCP服務(wù)器程序通常與SCP客戶端是相同的程序。SCP服務(wù)器軟件可以普通機(jī)器或防火墻配置為僅接受22端口上的SCP流量的極高安全標(biāo)準(zhǔn)的機(jī)器上運(yùn)行。
使用最廣泛的SCP程序可能是命令行界面的scp程序,這在大多數(shù)SSH實(shí)現(xiàn)中提供。scp程序是rcp命令的安全模擬。scp程序是所有想提供SCP服務(wù)的SSH服務(wù)器的必備,scp功能也作為SCP服務(wù)器。
部分SSH實(shí)現(xiàn)提供scp2程序,這使用SFTP協(xié)議而非SCP,但提供與相同的命令行界面scp。scp此時(shí)通常符號(hào)鏈接至scp2。
通常來(lái)說(shuō),scp程序的語(yǔ)法類似cp(copy)的語(yǔ)法。
復(fù)制文件到主機(jī):scp SourceFile user@host:directory/TargetFile
從主機(jī)復(fù)制文件:1scp user@host:directory/SourceFile TargetFilescp-r
2scp user@host:directory/SourceFolder TargetFolder
注意,如果遠(yuǎn)程主機(jī)使用非默認(rèn)端口22,可以在命令中指定。例如,從主機(jī)復(fù)制一個(gè)文件。
scp -P 2222 user@host:directory/SourceFile TargetFile
由于安全復(fù)制協(xié)議僅實(shí)現(xiàn)文件傳輸,GUI的SCP客戶端很少,因?yàn)閷?shí)現(xiàn)它需要額外的功能(至少要有目錄列出)。例如,winscp默認(rèn)為SFTP協(xié)議。即使在SCP模式下操作,WinSCP等客戶端通常也不是純粹的SCP客戶端,因?yàn)樗麄儽仨氂闷渌侄螌?shí)現(xiàn)額外的功能(例如ls命令)。這反過(guò)來(lái)帶來(lái)了平臺(tái)依賴性問(wèn)題。
SFTP客戶端是更全面的通過(guò)SSH管理文件的工具。
參考資料 >