Linux中怎么使用SCP命令安全傳輸文件,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創(chuàng)新互聯(lián)是一家企業(yè)級云計算解決方案提供商,超15年IDC數(shù)據(jù)中心運營經驗。主營GPU顯卡服務器,站群服務器,成都服務器托管,海外高防服務器,大帶寬服務器,動態(tài)撥號VPS,海外云手機,海外云服務器,海外服務器租用托管等。
SCP(安全復制)是 Linux 和 Unix 之類的系統(tǒng)中的命令行工具,用于通過網絡安全地跨系統(tǒng)傳輸文件和目錄。當我們使用 scp
命令將文件和目錄從本地系統(tǒng)復制到遠程系統(tǒng)時,則在后端與遠程系統(tǒng)建立了 ssh 連接。換句話說,我們可以說 scp
在后端使用了相同的 SSH 安全機制,它需要密碼或密鑰進行身份驗證。
在本教程中,我們將討論 14 個有用的 Linux scp
命令示例。
scp
命令語法:
# scp <選項> <文件或目錄> 用戶名@目標主機:/<文件夾> # scp <選項> 用戶名@目標主機:/文件 <本地文件夾>
scp
命令的第一個語法演示了如何將文件或目錄從本地系統(tǒng)復制到特定文件夾下的目標主機。
scp
命令的第二種語法演示了如何將目標主機中的文件復制到本地系統(tǒng)中。
下面列出了 scp
命令中使用最廣泛的一些選項,
-C
啟用壓縮
-i
指定識別文件或私鑰
-l
復制時限制帶寬
-P
指定目標主機的 ssh 端口號
-p
復制時保留文件的權限、模式和訪問時間
-q
禁止 SSH 警告消息
-r
遞歸復制文件和目錄
-v
詳細輸出
現(xiàn)在讓我們跳入示例!
假設我們要使用 scp
命令將 jdk 的 rpm 軟件包從本地 Linux 系統(tǒng)復制到遠程系統(tǒng)(172.20.10.8),請使用以下命令,
[root@linuxtechi ~]$ scp jdk-linux-x64_bin.rpm root@linuxtechi:/optroot@linuxtechi's password:jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00[root@linuxtechi ~]$
上面的命令會將 jdk 的 rpm 軟件包文件復制到 /opt
文件夾下的遠程系統(tǒng)。
假設我們想將文件從遠程系統(tǒng)復制到本地系統(tǒng)下的 /tmp
文件夾,執(zhí)行以下 scp
命令,
[root@linuxtechi ~]$ scp root@linuxtechi:/root/Technical-Doc-RHS.odt /tmproot@linuxtechi's password:Technical-Doc-RHS.odt 100% 1109KB 31.8MB/s 00:00[root@linuxtechi ~]$ ls -l /tmp/Technical-Doc-RHS.odt-rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt[root@linuxtechi ~]$
在 scp
命令中,我們可以使用 -v
選項啟用詳細輸出。使用詳細輸出,我們可以輕松地發(fā)現(xiàn)后臺確切發(fā)生了什么。這對于調試連接、認證和配置等問題非常有用。
root@linuxtechi ~]$ scp -v jdk-linux-x64_bin.rpm root@linuxtechi:/optExecuting: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /optOpenSSH_7.8p1, OpenSSL 1.1.1 FIPS 11 Sep 2018debug1: Reading configuration data /etc/ssh/ssh_configdebug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.confdebug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.configdebug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22.debug1: Connection established.…………debug1: Next authentication method: passwordroot@linuxtechi's password:
可以使用 scp
命令一次性將多個文件復制/傳輸?shù)竭h程系統(tǒng),在 scp
命令中指定多個文件,并用空格隔開,示例如下所示
[root@linuxtechi ~]$ scp install.txt index.html jdk-linux-x64_bin.rpm root@linuxtechi:/mntroot@linuxtechi's password:install.txt 100% 0 0.0KB/s 00:00index.html 100% 85KB 7.2MB/s 00:00jdk-linux-x64_bin.rpm 100% 10MB 25.3MB/s 00:00[root@linuxtechi ~]$
使用 scp
命令,我們可以在兩個遠程主機之間復制文件和目錄,假設我們有一個可以連接到兩個遠程 Linux 系統(tǒng)的本地 Linux 系統(tǒng),因此從我的本地 Linux 系統(tǒng)中,我可以使用 scp
命令在這兩個系統(tǒng)之間復制文件,
命令語法:
# scp 用戶名@遠程主機1:/<要傳輸?shù)奈募? 用戶名@遠程主機2:/<文件夾>
示例如下:
# scp root@linuxtechi:~/backup-Oct.zip root@linuxtechi:/tmp# ssh root@linuxtechi "ls -l /tmp/backup-Oct.zip"-rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip
在 scp
命令中使用 -r
選項將整個目錄從一個系統(tǒng)遞歸地復制到另一個系統(tǒng),示例如下所示:
[root@linuxtechi ~]$ scp -r Downloads root@linuxtechi:/opt
使用以下命令驗證 Downloads
文件夾是否已復制到遠程系統(tǒng),
[root@linuxtechi ~]$ ssh root@linuxtechi "ls -ld /opt/Downloads"drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads[root@linuxtechi ~]$
在 scp
命令中,我們可以通過使用 -C
選項啟用壓縮來提高傳輸速度,它將自動在源主機上啟用壓縮并在目標主機上解壓縮。
root@linuxtechi ~]$ scp -r -C Downloads root@linuxtechi:/mnt
在以上示例中,我們正在啟用壓縮的情況下傳輸下載目錄。
在 scp
命令中使用 -l
選項設置復制時對帶寬使用的限制。帶寬以 Kbit/s 為單位指定,示例如下所示:
[root@linuxtechi ~]$ scp -l 500 jdk-linux-x64_bin.rpm root@linuxtechi:/var
在某些情況下,目標主機上的 ssh 端口會更改,因此在使用 scp
命令時,我們可以使用 -P
選項指定 ssh 端口號。
[root@linuxtechi ~]$ scp -P 2022 jdk-linux-x64_bin.rpm root@linuxtechi:/var
在上面的示例中,遠程主機的 ssh 端口為 “2022”。
從源復制到目標時,在 scp
命令中使用 -p
選項保留權限、訪問時間和模式。
[root@linuxtechi ~]$ scp -p jdk-linux-x64_bin.rpm root@linuxtechi:/var/tmpjdk-linux-x64_bin.rpm 100% 10MB 13.5MB/s 00:00[root@linuxtechi ~]$
在 scp
命令中使用 -q
選項可禁止顯示 ssh 的傳輸進度、警告和診斷消息。示例如下所示:
[root@linuxtechi ~]$ scp -q -r Downloads root@linuxtechi:/var/tmp[root@linuxtechi ~]$
在大多數(shù) Linux 環(huán)境中,首選基于密鑰的身份驗證。在 scp
命令中,我們使用 -i
選項指定識別文件(私鑰文件),示例如下所示:
[root@linuxtechi ~]$ scp -i my_key.pem -r Downloads root@linuxtechi:/root
在上面的示例中,my_key.pem
是識別文件或私鑰文件。
在某些情況下,你使用不同的網絡連接到 Linux 系統(tǒng),可能某些網絡位于代理服務器后面,因此在這種情況下,我們必須具有不同的 ssh_config
文件。
通過 -F
選項在 scp
命令中指定了不同的 ssh_config
文件,示例如下所示:
[root@linuxtechi ~]$ scp -F /home/pkumar/new_ssh_config -r Downloads root@linuxtechi:/rootroot@linuxtechi's password:jdk-linux-x64_bin.rpm 100% 10MB 16.6MB/s 00:00backup-Oct.zip 100% 713MB 41.9MB/s 00:17index.html 100% 85KB 6.6MB/s 00:00[root@linuxtechi ~]$
默認情況下,scp
使用 AES-128 加密方式來加密文件。如果你想在 scp
命令中使用其他加密方式,請使用 -c
選項,后接加密方式名稱。
假設我們要在用 scp
命令傳輸文件時使用 3des-cbc 加密方式,請運行以下 scp
命令:
[root@linuxtechi ~]# scp -c 3des-cbc -r Downloads root@linuxtechi:/root
使用以下命令列出 ssh
和 scp
支持的加密方式:
[root@linuxtechi ~]# ssh -Q cipher localhost | paste -d , -s -3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,root@linuxtechi,aes128-ctr,aes192-ctr,aes256-ctr,root@linuxtechi,root@linuxtechi,root@linuxtechi[root@linuxtechi ~]#
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。