SCP 什麼是 ? 1分鐘認識 SCP 連線原理!
安全複製(Secure copy,SCP)兩台主機之間的上傳與下載是基於我們常使用的 SSH(Secure Shell,SSH)
SCP 好處是什麼?
若要在不同的 Linux 主機之間複製檔案,最常用的方法就是使用 scp
指令
SCP 指令及使用方式
語法
scp
指令的語法跟一般的 cp
類似,其語法為:
scp {帳號@來源主機}:來源目錄或檔案 {帳號@目的主機}:目的目錄或檔案
SCP 常用參數介紹
scp 參數選項 | 描述 |
---|---|
-P (port) | 指定遠端主機的 ssh 埠 |
-p | 保留檔案修改和訪問時間 |
-q | 不顯示進度表和錯誤資訊 |
-C | 傳輸時壓縮資料 |
-r | 遞迴複製檔案 |
SCP 教學範例
本地端複製檔案到遠端
# 本地端的 /path/file複製到 192.168.50.1 上的/path/file
scp /path/file username@192.168.50.1:/path/file
本地端複製目錄到遠端
若要複製整個目錄以及其下的所有檔案,則加上 -r
參數:
# 本地端的目錄 /path/dir 複製到 192.168.50.1 上的/path/dir scp -r /path/dir username@192.168.50.1:/path/dir
從遠端複製檔案到本地端
# 遠端 192.168.50.1 的 /path/file 複製到地端的 /path/file
scp username@192.168.50.1:/path/file /path/file
從一個遠端位置複製檔案到另一個遠端位置
scp username@192.168.50.1:/path/file username2@192.168.50.2:/path/file
保留檔案時間與權限
# 保留原本的修改時間、存取時間與權限 scp -p /path/file username@192.168.50.1:/path/file
資料壓縮
# 保留原本的修改時間、存取時間與權限 scp -C /path/file username@192.168.50.1:/path/file
限制傳輸速度
# 指定可用的網路頻寬上限值(單位為 Kbit/s) 5120即5M速度 scp -l 5120 /path/file username@192.168.50.1:/path/file
自訂連接埠
一般 SSH 伺服器的連接埠號預設為22,如果遇到非預設埠號,可使用 -p 來指定埠號
# 指定埠號 8888 scp -p 8888 /path/file username@192.168.50.1:/path/file
IPv4 與 IPv6
一般 SSH 伺服器的連接埠號預設為22,如果遇到非預設埠號,可使用 -p 來指定埠號
# 使用 IPv4 scp -4 /path/file1 myuser@192.168.50.1:/path/file2 # 使用 IPv6 scp -6 /path/file1 myuser@192.168.50.1:/path/file2
這個命令會提示我們輸入使用者密碼,輸入正確的密碼後就會開始傳輸,可參考本篇SSH Key是什麼?4步驟實現 SSH 連線免密碼!
使用 SCP 的注意事項
ssh 或是 scp 異動檔案的LOG記錄預設是關閉的,但從資安的角度出發,任何異動檔案都需要被記錄下來,根據使用經驗LOG最好能夠保留6個月的紀錄,當然設備的空間有限,可以搭配crontab定期壓縮備份既有的檔案來節省空間,未來有機會我在寫一篇文章來補充
編輯 /etc/ssh/sshd_config (需 openssh 4.x版以上)
Subsystem sftp /usr/libexec/openssh/sftp-server 改為 Subsystem sftp /usr/libexec/openssh/sftp-server -f AUTH -l INFO
設定完之後,若往後有檔案的異動都會記錄在 /var/log/messages
參考資料:wikipedia、SCP command options、redhat、IBM