在 Linux 上安全傳輸文件的 14 SCP 命令示例

SCP(安全複製Secure Copy)是 Linux 和 Unix 之類的系統中的命令行工具,用於經過網絡安全地跨系統傳輸文件和目錄。當咱們使用 scp 命令將文件和目錄從本地系統複製到遠程系統時,則在後端與遠程系統創建了 ssh 鏈接。換句話說,咱們能夠說 scp 在後端使用了相同的 SSH 安全機制,它須要密碼或密鑰進行身份驗證。html

scp-command-examples-linux

在本教程中,咱們將討論 14 個有用的 Linux scp 命令示例。linux

scp 命令語法:git

# scp <選項> <文件或目錄> 用戶名@目標主機:/<文件夾>

# scp <選項> 用戶名@目標主機:/文件 <本地文件夾>
複製代碼

scp 命令的第一個語法演示瞭如何將文件或目錄從本地系統複製到特定文件夾下的目標主機。github

scp 命令的第二種語法演示瞭如何將目標主機中的文件複製到本地系統中。後端

下面列出了 scp 命令中使用最普遍的一些選項,安全

  • -C 啓用壓縮
  • -i 指定識別文件或私鑰
  • -l 複製時限制帶寬
  • -P 指定目標主機的 ssh 端口號
  • -p 複製時保留文件的權限、模式和訪問時間
  • -q 禁止 SSH 警告消息
  • -r 遞歸複製文件和目錄
  • -v 詳細輸出

如今讓咱們跳入示例!ruby

示例:1)使用 scp 將文件從本地系統複製到遠程系統

假設咱們要使用 scp 命令將 jdk 的 rpm 軟件包從本地 Linux 系統複製到遠程系統(172.20.10.8),請使用如下命令,bash

[root@linuxtechi ~]$ scp jdk-linux-x64_bin.rpm root@linuxtechi:/opt
root@linuxtechi's password: jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00 [root@linuxtechi ~]$ 複製代碼

上面的命令會將 jdk 的 rpm 軟件包文件複製到 /opt 文件夾下的遠程系統。服務器

示例:2)使用 scp 將文件從遠程系統複製到本地系統

假設咱們想將文件從遠程系統複製到本地系統下的 /tmp 文件夾,執行如下 scp 命令,網絡

[root@linuxtechi ~]$ scp root@linuxtechi:/root/Technical-Doc-RHS.odt /tmp
root@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 ~]$ 複製代碼

示例:3)使用 scp 傳輸文件時的詳細輸出(-v)

scp 命令中,咱們可使用 -v 選項啓用詳細輸出。使用詳細輸出,咱們能夠輕鬆地發現後臺確切發生了什麼。這對於調試鏈接、認證和配置等問題很是有用。

root@linuxtechi ~]$ scp -v jdk-linux-x64_bin.rpm root@linuxtechi:/opt
Executing: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /opt
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: /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: password
root@linuxtechi's password: 複製代碼

示例:4)將多個文件傳輸到遠程系統

可使用 scp 命令一次性將多個文件複製/傳輸到遠程系統,在 scp 命令中指定多個文件,並用空格隔開,示例以下所示

[root@linuxtechi ~]$ scp install.txt index.html jdk-linux-x64_bin.rpm root@linuxtechi:/mnt
root@linuxtechi's password: install.txt 100% 0 0.0KB/s 00:00 index.html 100% 85KB 7.2MB/s 00:00 jdk-linux-x64_bin.rpm 100% 10MB 25.3MB/s 00:00 [root@linuxtechi ~]$ 複製代碼

示例:5)在兩個遠程主機之間傳輸文件

使用 scp 命令,咱們能夠在兩個遠程主機之間複製文件和目錄,假設咱們有一個能夠鏈接到兩個遠程 Linux 系統的本地 Linux 系統,所以從個人本地 Linux 系統中,我可使用 scp 命令在這兩個系統之間複製文件,

命令語法:

# scp 用戶名@遠程主機1:/<要傳輸的文件> 用戶名@遠程主機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
複製代碼

示例:6)遞歸複製文件和目錄(-r)

scp 命令中使用 -r 選項將整個目錄從一個系統遞歸地複製到另外一個系統,示例以下所示:

[root@linuxtechi ~]$ scp -r Downloads root@linuxtechi:/opt
複製代碼

使用如下命令驗證 Downloads 文件夾是否已複製到遠程系統,

[root@linuxtechi ~]$ ssh root@linuxtechi "ls -ld /opt/Downloads"
drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads
[root@linuxtechi ~]$
複製代碼

示例:7)經過啓用壓縮來提升傳輸速度(-C)

scp 命令中,咱們能夠經過使用 -C 選項啓用壓縮來提升傳輸速度,它將自動在源主機上啓用壓縮並在目標主機上解壓縮。

root@linuxtechi ~]$ scp -r -C Downloads root@linuxtechi:/mnt
複製代碼

在以上示例中,咱們正在啓用壓縮的狀況下傳輸下載目錄。

示例:8)複製時限制帶寬(-l)

scp 命令中使用 -l 選項設置複製時對帶寬使用的限制。帶寬以 Kbit/s 爲單位指定,示例以下所示:

[root@linuxtechi ~]$ scp -l 500 jdk-linux-x64_bin.rpm  root@linuxtechi:/var
複製代碼

示例:9)在 scp 時指定其餘 ssh 端口(-P)

在某些狀況下,目標主機上的 ssh 端口會更改,所以在使用 scp 命令時,咱們可使用 -P 選項指定 ssh 端口號。

[root@linuxtechi ~]$ scp -P 2022 jdk-linux-x64_bin.rpm  root@linuxtechi:/var
複製代碼

在上面的示例中,遠程主機的 ssh 端口爲 「2022」。

示例:10)複製時保留文件的權限、模式和訪問時間(-p)

從源複製到目標時,在 scp 命令中使用 -p 選項保留權限、訪問時間和模式。

[root@linuxtechi ~]$ scp -p jdk-linux-x64_bin.rpm  root@linuxtechi:/var/tmp
jdk-linux-x64_bin.rpm                            100%   10MB  13.5MB/s   00:00
[root@linuxtechi ~]$
複製代碼

示例:11)在 scp 中以安靜模式傳輸文件(-q)

scp 命令中使用 -q 選項可禁止顯示 ssh 的傳輸進度、警告和診斷消息。示例以下所示:

[root@linuxtechi ~]$ scp -q -r Downloads root@linuxtechi:/var/tmp
[root@linuxtechi ~]$
複製代碼

示例:12)在傳輸時使用 scp 中的識別文件(-i)

在大多數 Linux 環境中,首選基於密鑰的身份驗證。在 scp 命令中,咱們使用 -i 選項指定識別文件(私鑰文件),示例以下所示:

[root@linuxtechi ~]$ scp -i my_key.pem -r Downloads root@linuxtechi:/root
複製代碼

在上面的示例中,my_key.pem 是識別文件或私鑰文件。

示例:13)在 scp 中使用其餘 ssh_config 文件(-F)

在某些狀況下,你使用不一樣的網絡鏈接到 Linux 系統,可能某些網絡位於代理服務器後面,所以在這種狀況下,咱們必須具備不一樣的 ssh_config 文件。

經過 -F 選項在 scp 命令中指定了不一樣的 ssh_config 文件,示例以下所示:

[root@linuxtechi ~]$ scp -F /home/pkumar/new_ssh_config -r Downloads root@linuxtechi:/root
root@linuxtechi's password: jdk-linux-x64_bin.rpm 100% 10MB 16.6MB/s 00:00 backup-Oct.zip 100% 713MB 41.9MB/s 00:17 index.html 100% 85KB 6.6MB/s 00:00 [root@linuxtechi ~]$ 複製代碼

示例:14)在 scp 命令中使用其餘加密方式(-c)

默認狀況下,scp 使用 AES-128 加密方式來加密文件。若是你想在 scp 命令中使用其餘加密方式,請使用 -c 選項,後接加密方式名稱。

假設咱們要在用 scp 命令傳輸文件時使用 3des-cbc 加密方式,請運行如下 scp 命令:

[root@linuxtechi ~]# scp -c 3des-cbc -r Downloads root@linuxtechi:/root
複製代碼

使用如下命令列出 sshscp 支持的加密方式:

[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 ~]#
複製代碼

以上就是本教程的所有內容,要獲取有關 scp 命令的更多詳細信息,請參考其手冊頁。請在下面的評論部分中分享你的反饋和評論。


via: www.linuxtechi.com/scp-command…

做者:Pradeep Kumar 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索