Linux 的 SCP 命令
兩台主機傳送文件的時候, 經常用到 scp 命令。scp 的基本命令格式如下:scp [參數] [原路徑] [目標路徑]
常用的命令參數
- -1 強制scp命令使用協議ssh1
- -2 強制scp命令使用協議ssh2
- -4 強制scp命令只使用IPv4尋址
- -6 強制scp命令只使用IPv6尋址
- -B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
- -C 允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能)
- -p 留原文件的修改時間,訪問時間和訪問權限。
- -q 不顯示傳輸進度條。
- -r 遞歸復制整個目錄。
- -v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題。
- -c cipher 以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。
- -F ssh_config 指定一個替代的ssh配置文件,此參數直接傳遞給ssh。
- -i identity_file 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。
- -l limit 限定用戶所能使用的帶寬,以Kbit/s為單位。
- -o ssh_option 如果習慣於使用ssh_config(5)中的參數傳遞方式,
- -P port 注意是大寫的P, port是指定數據傳輸用到的端口號
- -S program 指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項。
使用案例
案例 1
比如想要從遠程主機 (1.1.1.1) 使用ivy
用戶復制一個/home/ivy/test
目錄到本地主機的/home/ivy/
目錄下。
scp -r -v ivy@1.1.1.1:/home/ivy/test /home/ivy/
輸入后會指引輸入遠程主機 ivy 用戶的密碼來創建連接。
案例 2
如果與遠程主機創建連接的驗證方式是密鑰驗證,那么就復雜點了。
首先把公鑰拷貝到遠程主機ivy
用戶的/home/ivy/.ssh/authorized_keys
文件中。
然后把私鑰拷貝到本地主機的某個目錄下,比如/home/ivy/private.pem
。
接着划重點,需要修改一下私鑰文件的權限(不然會報WARNING: UNPROTECTED PRIVATE KEY FILE!
的錯),具體操作如下。
chmod 700 /home/ivy/private.pem
再接着就可以正常使用 scp 命令了。
scp -i /home/ivy/private.pem -r -v ivy@1.1.1.1:/home/ivy/test /home/ivy/
案例 3
如果遠程主機不是默認的 22 端口創建連接呢?那么加一個參數就可以了,比如說 2021 端口。
scp -P 2021 -i /home/ivy/private.pem -r -v ivy@1.1.1.1:/home/ivy/test /home/ivy/