衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Linux和類Unix操作系統中使用SCP安全地傳輸文件

dyquk4xk2p3d ? 來源:Linux中國 ? 2023-02-23 09:25 ? 次閱讀

網絡上文件傳輸可以通過各種不同的方式和協議來完成。遠程復制文件最常用的協議是Rsync、SCP和SFTP。在本文中,我們將了解什么是 SCP以及如何在 Linux 和類 Unix 操作系統中使用 SCP 在本地和遠程計算機之間安全地傳輸文件。

什么是 SCP?

SCP,代表安全復制(Secure Copy),它是一個命令行程序,在 Linux 和類 Unix 操作系統中以安全的方式在本地和遠程系統之間,或在兩個遠程系統之間復制文件和目錄。

使用scp命令,你可以安全地復制文件或目錄:

?從本地到遠程系統

?從遠程系統到本地

?在兩個遠程系統之間

使用scp命令傳輸數據時,文件和目錄都是加密的。因此,即使網絡被破壞,作惡者也無法獲得任何有意義的數據。

SCP 是 openSSH 程序的一個組件,它使用 SSH 協議安全地傳輸文件。幾乎所有現代 Linux 和 Unix 發行版都預裝了 OpenSSH,所以不必費心安裝它。

提醒一句:

根據 openSSH 開發人員的官方公告:

scp 協議已經過時了,它不靈活且不易修復。我們建議使用更現代的協議,如sftp和rsync來代替。

但是,大多數用戶仍然更喜歡 SCP 協議。因為,SCP 處理遠程文件傳輸比同行 SFTP 和 Rsync 更快。

另外,SCP 的工作原理與cp命令完全相同,而rsync則會判斷源目錄是否有結尾斜杠而出現不同的行為。看一看下面的命令:

?rsync source destination/- 將source目錄復制到destination文件夾內。

?rsync source/ destination/- 將source目錄的內容復制到destination文件夾中。

所以,你必須反復檢查是否在路徑中添加了斜杠。

我個人使用Rsync ostechnix.com在兩臺主機之間復制大文件,使用 SCP 在網絡上復制單個文件。

SCP 命令語法

SCP 的通用語法如下:

scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

根據文件傳輸路徑的不同,語法也會有所不同。這里我羅列了一些語法格式示例。

從本地復制一個文件到遠程系統:

scp SourceFile User@RemoteHost:RemotePath

類似的,從本地系統復制一個目錄到遠程系統,使用-r參數

scp -r SourceDirectory User@RemoteHost:RemotePath

復制多個文件到遠程系統:

scp SourceFile1 SourceFile2 User@RemoteHost:RemotePath

遠程系統復制文件到本地:

scp User@RemoteHost:RemoteFilePath DestinationFile

遠程系統復制目錄到本地:

scp -r User@RemoteHost:RemoteDirectoryPath DestinationDirectory

在本地將文件在兩個遠程系統之間復制:

scp User@RemoteHost1:RemoteFile1 User@RemoteHost2:RemotePath

注意,當你在兩個遠程系統之間復制文件時,流量不會通過本地系統。操作直接在兩個遠程系統之間進行。但是,你可以使用-3參數讓流量經過你運行scp命令的系統。

從你的本地系統將一個遠程系統的目錄復制到另一個遠程系統:

scp -r User@RemoteHost1:RemoteDirectory User@RemoteHost2:DestinationPath

SCP 命令參數

SCP 命令最常用的參數有:

pYYBAGP2wR2AJatOAAO88jz7UAY983.jpg

SCP 有很多參數,你可以查看它的手冊頁來了解其他參數。讓我們看一些有用的 scp 命令示例。

開始前要記住的重要事項

poYBAGP2wT-AWD1VAAEl4niPtwM574.jpg

在 Linux 中使用 SCP 傳輸文件

正如我所說,我們可以使用scp命令將文件或目錄從本地復制到遠程系統,反之亦然,或者在兩臺遠程系統之間復制文件或目錄。

1. 使用 SCP 從本地系統復制文件到遠程系統

使用scp命令將文件從本地復制到遠程系統,運行:

$ scp File1.txt ostechnix@192.168.1.40:/home/ostechnix/

示例輸出:

ostechnix@192.168.1.40's password:

File1.txt 100% 104 814.0KB/s 00:00

讓我們分析一下上面的命令,看看每個參數都做了什么。

?File1.txt- 源文件

?ostechnix- 遠程系統的用戶名

?192.168.1.40- 遠程系統的 IP 地址

?/home/ostechnix/- 遠程系統中的目標目錄。

這是我們想要傳輸源文件的絕對路徑,如File.txt。

你還可以修改目標文件的名稱。下面的命令將File1.txt傳輸到目的地,保存為myfile.txt。

$ scp File1.txt ostechnix@192.168.1.40:/home/ostechnix/myfile.txt

fce5db86-b309-11ed-bfe3-dac502259ad0.png

將文件從本地復制到遠程系統

2. 使用 SCP 從本地系統復制多個文件到遠程系統

使用scp命令將多個文件從本地系統傳輸到遠程系統,運行:

$ scp File1.txt File2.txt ostechnix@192.168.1.40:/home/ostechnix/

示例輸出:

ostechnix@192.168.1.40's password:

File1.txt 100% 104 689.4KB/s 00:00

File2.txt 100% 496 6.3MB/s 00:00

fd297dc8-b309-11ed-bfe3-dac502259ad0.png

從本地復制多個文件到遠程系統

這里:

?File1.txt和File2.txt- 源文件名

?ostechnix@192.168.1.40- 遠程系統的用戶名和 IP 地址

?/home/ostechnix- 目標文件的路徑

如果文件具有相同的擴展名,你可以使用以下替代命令來實現相同的目標。

$ scp {File1,File2}.txt ostechnix@192.168.1.40:/home/ostechnix/

或者,

$ scp *.txt ostechnix@192.168.1.40:/home/ostechnix/

3. 使用 SCP 從本地到遠程系統遞歸復制目錄

遞歸地將整個目錄(包括子目錄及其內容)從本地復制到遠程系統,使用-r參數。

$ scp -r Documents/ ostechnix@192.168.1.40:/home/ostechnix/

fd66d506-b309-11ed-bfe3-dac502259ad0.png

從本地復制目錄到遠程系統

上述命令將整個Documents目錄包括其內容復制到目標系統。

其中,

pYYBAGP2wX6AMI-pAAByEc2QVhM396.jpg

4. 用 SCP 將文件從遠程系統傳輸到本地

還記得我們從本地系統復制了File1.txt到遠程系統,讓我們把它復制回本地。

使用scp命令從遠程系統復制文件到本地,運行:

$ scp ostechnix@192.168.1.40:/home/ostechnix/File1.txt Downloads/

其中

pYYBAGP2wZGAf6WrAABsIj6WkoY523.jpg

fdae12f4-b309-11ed-bfe3-dac502259ad0.png

從遠程系統傳輸文件到本地

5. 使用 SCP 將多個文件從遠程系統傳輸到本地

將多個文件從遠程系統復制到本地,在花括號內注明文件的絕對路徑,如下所示:

$ scp ostechnix@192.168.1.40:/home/ostechnix/{File1.txt,File2.txt} Downloads/

fdefa6ce-b309-11ed-bfe3-dac502259ad0.png

將多個文件從遠程系統傳輸到本地

上述命令將從遠程系統的/home/ostechnix/目錄中復制File1.txt和File2.txt到本地的Downloads目錄中。

注意,花括號內的逗號后面沒有空格。

6. 從遠程系統遞歸復制目錄到本地

使用scp從遠程系統遞歸復制整個目錄(包括子目錄及其內容)到本地系統,使用-r參數。

$ scp -r ostechnix@192.168.1.40:/home/ostechnix/Documents Downloads/

上述命令將從遠程系統將整個Documents目錄復制到本地的Downloads目錄。

7. 使用 SCP 在兩臺遠程計算機之間復制文件

使用scp命令將文件從一個遠程系統直接復制到另一個遠程系統,運行:

$ scp senthil@192.168.1.40:/home/senthil/File1.txt kumar@192.168.1.20:/home/kumar/

它會要求你輸入兩個遠程系統的密碼:

其中,

pYYBAGP2wbaADOTBAACa4fm1Zxg605.jpg

上述命令將從遠程主機192.168.1.40復制/home/senthil/File1.txt到192.168.1.20上的/home/kumar/目錄。

在這種方法中,數據將直接從一個遠程系統傳輸到另一個遠程系統。如果你想通過本地機器路由流量,使用-3參數,如下所示:

$ scp -3 senthil@192.168.1.40:/home/senthil/File1.txt kumar@192.168.1.20:/home/kumar/

8. 使用 SCP 復制文件時啟用壓縮

到目前為止,我們在沒有壓縮的情況下傳輸了文件?,F在我們將使用-C參數在傳輸文件時啟用壓縮。

$ scp -C File1.txt ostechnix@192.168.1.40:/home/ostechnix/

-C參數將在源端啟用壓縮,并在目標端自動解壓數據。

通過啟用壓縮,可以顯著提高文件復制或傳輸速度。

9. 使用 SCP 傳輸文件時限制帶寬

我們可以使用-l參數限制帶寬。注意,最大帶寬單位為 Kbits/s。1 Byte = 8 bit。因此,如果你想將帶寬限制在 200KB/s,-l的值將是1600(200*8)。

$ scp -l 1600 File1.txt ostechnix@192.168.1.40:/home/ostechnix/

這在傳輸大文件時非常有用,可以防止 SCP 限制帶寬。

10. 使用 SCP 復制文件時使用不同端口

作為系統管理員,出于安全原因,你可能在遠程服務器上更改了 SSH 協議的默認端口 ostechnix.com。這種情況下,你可以在傳輸文件時使用-P參數指定端口號。注意:大寫的P。

$ scp -P 2022 File1.txt ostechnix@192.168.1.40:/home/ostechnix/

11. 使用 SCP 復制文件時使用不同的加密方法

默認情況下,SCP 使用AES-128對文件進行加密。如果你想使用不同的加密方法,使用c參數。

例如,如果你想使用3des-cbc加密方法,命令如下所示:

$ scp -c 3des-cbc File1.txt ostechnix@192.168.1.40:/home/ostechnix/

要查看支持的密碼列表,執行:

$ ssh -Q cipher localhost | paste -d, -s -

示例輸出:

3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

12. 在詳細模式下使用 SCP 復制文件

如果你想知道使用scp復制文件時幕后發生了什么,你可以使用-v參數。使用詳細模式傳輸文件時,終端上會顯示執行scp命令執行的每一步過程。這在故障排除時很方便。

$ scp -v File1.txt ostechnix@192.168.1.40:/home/ostechnix/

在詳細模式下發送文件時,你將看到大量輸出,如下所示:

feaaa35c-b309-11ed-bfe3-dac502259ad0.png

在詳細模式下使用 SCP 復制文件

13. 在安靜模式下使用 SCP 傳輸文件

我們可以使用-q參數在安靜模式下傳輸文件。在安靜模式下共享文件時,不會在輸出中顯示進度、警告或診斷信息。

$ scp -q File1.txt ostechnix@192.168.1.40:/home/ostechnix/

14. 使用 SCP 傳輸文件時保留文件屬性

使用-p參數可以保留文件修改時間、訪問時間和模式等文件屬性。注意,這是小寫的 p。

$ scp -p File1.txt ostechnix@192.168.1.40:/home/ostechnix/

15. 使用 SCP 復制文件時使用身份文件

SSH 同時支持基于密碼和密鑰的身份驗證。密鑰是 Linux 環境中使用最廣泛的身份驗證方法。

如果你想在傳輸文件時使用基于密鑰的身份驗證,使用-i參數指定身份文件或私鑰。

$ scp -i my_private_key.pem File1.txt ostechnix@192.168.1.40:/home/ostechnix/

16. 使用不同的 ssh 配置文件

在某些情況下,你需要使用不同的網絡來連接到 Linux 系統,或你有一個代理服務器。這在情況下,你可以配合-F參數使用不同的ssh_config文件。

$ scp -F /home/ostechnix/my_ssh_config File1.txt ostechnix@192.168.1.40:/home/ostechnix/

17. 使用 IPv4 或 IPv6 復制文件

在復制文件時,我們可以強制 SCP 只使用 IPv4 或 IPv6 地址。IPv4 網絡添加-4參數,IPv6 網絡添加-6參數可以實現這一點。

$ scp -6 File1.txt ostechnix@192.168.1.40:/home/ostechnix/

常見問題

問題 1:什么是 SCP?

SCP 是一個命令行程序,旨在將文件和目錄從本地系統安全地傳輸到遠程系統,反之亦然,或者直接在兩個遠程系統之間傳輸。

問題 2: 如何使用 SCP 將文件從本地復制到遠程計算機?

將文件從本地復制到遠程系統,命令如下:

scp SourceFile.txt User@RemoteHost:/some/remote/directory

問題 3:如何遞歸復制文件和目錄?

遞歸復制包含子目錄的目錄,使用-r參數:

scp -r /some/local/directory User@RemoteHost:/some/remote/directory

問題 4:使用 SCP 可以傳輸多個文件嗎?

當然,只要用空格分隔源文件名即可。

從本地復制多個文件到遠程:

scp file1.txt file2.txt file3.txt User@RemoteHost:/some/remote/directory

scp {file1,file2,file3}.txt User@RemoteHost:/some/remote/directory

scp *.txt User@RemoteHost:/some/remote/directory

從遠程復制多個文件到本地:

scp User@RemoteHost:/some/remote/directory/{file1.txt,file2.txt,file3.txt} /some/local/directory

從一個遠程系統復制多個文件到另一個遠程系統:

$ scp User@RemoteHost1:/some/remote/directory/{file1.txt,file2.txt,file3.txt} User@RemoteHost2:/some/remote/directory/

問題 5:如何傳輸目錄下的所有文件?

傳輸整個目錄,首先進入該目錄:

cd dir_name

然后,

scp *.txt User@RemoteHost:/some/remote/directory

問題 6:可以壓縮文件嗎?

當然。使用-C壓縮文件。文件會在源端壓縮,在目標端自動解壓縮。

scp -C /some/large/file User@RemoteHost:/some/remote/directory

問題 7:可以保留文件屬性嗎?

保留原始文件的修改時間、訪問時間和模式等文件屬性,使用-p參數。

scp -p file.txt User@RemoteHost:/some/remote/directory

問題 8: 可以使用其他端口嗎?

當然。SCP 配合-P參數允許你使用其他端口。

scp -P 2022 file.txt User@RemoteHost:/some/remote/directory

問題 9: 可以使用不同的加密方法嗎?

當然。使用-c參數。

scp -c 3des-cbc User@RemoteHost:/some/remote/directory

問題 10: 如何列出 SSH 支持的加密方法?

使用以下命令查看 SSH 和 SCP 支持的加密方法列表:

ssh -Q cipher localhost | paste -d, -s -

問題 11:SCP 真的安全嗎?

當然,它用起來是完全安全的。SCP 和 openSSH 使用相同的 SSH 機制。傳輸的數據在源端加密,目標端解密。

問題 12:可以從 Windows 系統傳輸文件到 Linux 嗎?

當然。使用PSCP程序將文件從 windows 傳輸到 Linux 平臺,你也可以使用WinSCP。

總結

在這篇全面指南中,我們了解了什么是 SCP,以及如何在 Linux 中使用SCP 安全地傳輸文件,其中包括17 個 SCP 命令示例,另外還回答了關于 SCP 的常見問題。

無論你是 Linux 管理人員、開發人員還是普通用戶,你都會面臨某個時候將文件復制到遠程系統或從遠程系統復制文件的情況,知道如何使用 SCP 安全地復制文件將是非常有用的。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210389
  • UNIX操作系統

    關注

    0

    文章

    13

    瀏覽量

    15327
  • SSH
    SSH
    +關注

    關注

    0

    文章

    189

    瀏覽量

    16405
  • SCP
    SCP
    +關注

    關注

    0

    文章

    29

    瀏覽量

    9286

原文標題:如何在 Linux 中使用 SCP 安全地傳輸文件

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LinuxUnix操作系統的一種變種

    的功能:1.對設備初始化和釋放.2.把數據從內核傳送到硬件和從硬件讀取數據.3.讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據.4.檢測和處理設備出現的錯誤.在Linux操作系統下有兩
    發表于 04-02 16:19

    什么是UNIX操作系統

    @TOC嵌入式方向在校目前所學到的知識**歡迎使用Markdown編輯器Linux概述linux是一套免費使用和自由傳播的UNIX操作系統
    發表于 11-04 07:29

    linux操作系統安全

    linux操作系統安全性 計算機系統安全性的內涵 操作系統安全性功能
    發表于 04-28 15:05 ?0次下載

    UNIX操作系統類型

    UNIX操作系統類型 由于Unix操作系統眾所周知的穩定性、可靠性,用來提供各種Internet服務的計算機運行的操作系統占很大比例的是
    發表于 12-26 12:02 ?2187次閱讀

    Linux操作系統下的PCI驅動開發

    PCI總線是一種成熟的計算機標準總線,而Linux操作系統則是一種源代碼公開的操作系統Linux構架完全沿襲了UNIX
    發表于 06-07 10:30 ?1689次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>下的PCI驅動開發

    unixlinux的區別

    Linux是一套免費使用和自由傳播的Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的
    發表于 11-14 10:08 ?6662次閱讀
    <b class='flag-5'>unix</b>和<b class='flag-5'>linux</b>的區別

    unix操作系統有哪些

    Unix操作系統眾所周知的穩定性、可靠性,用來提供各種Internet服務的計算機運行的操作系統占很大比例的是UnixUnix
    發表于 11-14 11:49 ?4.9w次閱讀

    Linux操作系統在定制PMP DM320的應用解析

    Linux是一套免費使用和自由傳播的Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的
    發表于 11-30 14:21 ?973次閱讀

    unix是什么操作系統_unix操作系統怎么安裝

    UNIX系統是一個分時操作系統。最早的UNIX系統于1970年問世。此前,只有面向批處理作業的操作系統
    發表于 09-02 16:01 ?2.5w次閱讀
    <b class='flag-5'>unix</b>是什么<b class='flag-5'>操作系統</b>_<b class='flag-5'>unix</b><b class='flag-5'>操作系統</b>怎么安裝

    從vista、UNIxLinux說起全面講解操作系統

    不僅系統地講述了操作系統的基本概念、原理和方法,而且以當代最流行的操作系統——Windows Vista、UNIxLinux為例,全面清楚
    發表于 03-26 14:13 ?5次下載

    LINUX操作系統的安裝與Linux常用文件命令

    LINUX操作系統的安裝與Linux常用文件命令說明。
    發表于 06-02 17:45 ?3次下載

    什么是Linux及其操作系統的特點

    Linux,全稱GNU/Linux,是一種免費使用和自由傳播的UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲于1991年10月5日首
    的頭像 發表于 01-30 17:30 ?3379次閱讀

    使用SCP和Rsync在Linux傳輸文件

    Linux 中,有時需要將文件從一臺計算機傳輸到另一臺計算機。為了完成這個任務,有兩個主要的工具可以使用:SCP 和 Rsync。本文將介紹如何使用這兩個工具在
    的頭像 發表于 05-12 14:32 ?1003次閱讀

    UnixLinux的差異

    摘要:程序員都知道,Linux 不是 Unix,不過二者之間確實存在關系,即 Linux 系統是從 Unix 派生出來的,而
    發表于 09-04 12:42 ?671次閱讀

    linux屬于什么操作系統

    Linux屬于一種UNIX操作系統。Linux,全稱GNU/Linux,是一套免費使用和自由傳
    的頭像 發表于 11-08 11:01 ?4720次閱讀
    试玩百家乐官网帐| 百家乐官网园小区户型图 | 大发888的促销代码| 百家乐辅助分析软件| 百家乐官网合法| 新世纪娱乐城官方网站| 网上百家乐赌场娱乐网规则| 新濠百家乐官网的玩法技巧和规则| 百家乐官网路单资料| 永利高现金网| 百家乐折叠桌| 免费玩百家乐官网的玩法技巧和规则| 百家乐官网怎么推算| 丹东亿酷棋牌世界官方下载| 破解百家乐真人游戏| 同花顺百家乐官网娱乐城| 百家乐官网怎么才会赢| 足球竞猜推荐| 威尼斯人娱乐城导航网| 永川市| 德州扑克算牌| 足球投注现金网| 现场百家乐投注| qq百家乐官网网络平台| 百家乐官网怎么样玩| 女神娱乐城| 大发888在线娱乐| 大发888注册网址| 大发888游戏代冲省钱技巧| 太阳百家乐破解| 银河百家乐的玩法技巧和规则| 明升百家乐娱乐城| 百家乐职业赌徒的解密| 玩百家乐官网输了| 开心8百家乐官网现金网| 澳盈| 德州扑克吧| 威尼斯人娱乐场骗人| 百家乐海滨网现场| 百家乐电话投注怎么玩| 博彩乐百家乐平台|