Categories: Linux

Linux 安全加密檔案傳輸 scp 指令教學與範例

介紹如何在 Linux 中使用 scp 指令透過 SSH 安全加密連線來傳輸檔案。

本地端傳輸至遠端

若要將本地端的 myfile.txt 檔案傳輸至 myuser@192.168.0.1/data/ 目錄中,可以執行:

# 將本地端 myfile.txt 傳輸至 myuser@192.168.0.1 的 /data/ 目錄
scp myfile.txt myuser@192.168.0.1:/data/

這樣 scp 就會以 myuser 帳號登入 192.168.0.1 主機之後,將 myfile.txt 檔案放置在該主機上的 /data/ 目錄中。

遠端傳輸至本地端

若要將遠端的檔案傳輸至本地端,語法都類似,例如以 myuser 帳號登入 192.168.0.1 主機之後,將 /data/myfile.txt 檔案複製到本地端目前的目錄下,可以執行:

# 將 myuser@192.168.0.1 中的 /data/myfile.txt 檔案複製到本地端目前目錄
scp myuser@192.168.0.1:/data/myfile.txt .

複製目錄

若要將整個目錄下的所有子目錄與檔案都一起複製,可以加上 -r 參數:

# 複製 myfolder 目錄至 myuser@192.168.0.1 的 /data/ 目錄
scp -r myfolder myuser@192.168.0.1:/data/

# 將 myuser@192.168.0.1 中的 /data/myfolder 目錄複製到本地端目前目錄
scp -r myuser@192.168.0.1:/data/myfolder .

保留檔案變更、存取時間與權限

若要讓檔案在複製之後,可以保留檔案的變更、存取時間與檔案權限,可以加上 -p 參數:

# 保留檔案變更、存取時間與權限
scp -p myfile.txt myuser@192.168.0.1:/data/

資料壓縮傳輸

若在低頻寬的網路環境,可以加上 -C 參數,讓資料以 gzip 壓縮之後再進行傳輸:

# 以 gzip 壓縮之後再進行傳輸
scp -C myfile.txt myuser@192.168.0.1:/data/

限制傳輸速度

若要限制資料傳輸速度,可以使用 -l 指定傳輸速度的上限值,單位為(Kbit/s):

# 限制資料傳輸速度為 500 Kbit/s
scp -l 500 myfile.txt myuser@192.168.0.1:/data/

指定 SSH 服務連接埠

SSH 服務的標準連接埠號為 22,但因為安全性的考量,管理者可能會把非公開的 SSH 服務開在其他的連接埠,這時候在使用 scp 傳輸資料時,就可以使用 -P 指定連接埠號:

# 指定 SSH 服務連接埠為 8022
scp -P 8022 myfile.txt myuser@192.168.0.1:/data/

使用公開金鑰認證

scp 也可以使用公開金鑰認證的方式登入遠端主機,省去打密碼的麻煩,若要指定私鑰則可使用 -i 參數:

# 指定私鑰檔案,以公開金鑰認證的方式登入遠端主機
scp -i my_id_dsa myfile.txt myuser@192.168.0.1:/data/

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago