scp(Secure Copy)基於 SSH 協定,提供加密、認證、完整性保護的跨主機檔案傳輸。本文涵蓋雙向複製語法、遞歸目錄、免密金鑰配置、大檔案優化與常見錯誤排查。
| 方向 | 語法 | 範例 |
|---|---|---|
| 本地 → 遠端 | scp 本地路徑 使用者@遠端IP:遠端路徑 | scp /home/ixdba/etc.tar.gz root@192.168.60.168:/tmp |
| 遠端 → 本地 | scp 使用者@遠端IP:遠端路徑 本地路徑 | scp root@192.168.60.133:/home/ixdba/etc.tar.gz /tmp |
| 遠端 → 遠端(經本地中轉) | scp -3 user1@host1:/path user2@host2:/path | 需本地能連兩端 |
-r:遞歸複製目錄(含子目錄)-p:保留修改時間、存取時間、權限-P port:指定 SSH 埠(大寫 P,區別於 ssh -p)-C:啟用壓縮(低頻寬網路有效)-l limit:限制頻寬(Kbit/s)-o ssh_option:傳遞 SSH 選項(如 -o StrictHostKeyChecking=no)ssh-keygen -t rsa -b 4096(一路 Enter,不設密語)ssh-copy-id user@remote_ip(輸入一次密碼)ssh user@remote_ip → 直接進 Shell之後 scp、rsync、ssh 均無需輸入密碼,適合自動化腳本。
scp /home/ixdba/etc.tar.gz root@192.168.60.168:/tmp
scp -rp /etc root@192.168.60.135:/opt
scp -P 2222 file.txt user@host:/path
scp -Cp -c aes128-ctr bigfile.iso user@host:/path
# -C 壓縮,-c aes128-ctr 較快加密演算法,-p 保留屬性
rsync 更強大rsync -avzP -e ssh /source/ user@host:/dest/
# -a 歸檔模式,-v 詳細,-z 壓縮,-P 進度+斷點續傳
rsync 支援增量同步、斷點續傳、刪除同步、頻寬限制、過濾規則,是生產環境同步備份的首選。
| 錯誤訊息 | 原因 | 解決 |
|---|---|---|
Permission denied | 金鑰未授權/權限錯誤 | 檢查 ~/.ssh/authorized_keys 權限 600、目錄 700 |
Connection refused | SSH 服務未啟動/埠錯誤/防火牆 | systemctl status sshd、firewall-cmd --add-service=ssh |
Host key verification failed | 遠端主機金鑰變更/中間人攻擊 | ssh-keygen -R hostname 移除舊紀錄 |
stalled / 速度極慢 | MTU 不匹配/加密效能/壓縮負擔 | 調整 MTU、改用 -c aes128-ctr、關閉 -C |
scp 是「隨叫隨到的加密搬運工」,rsync 是「智慧型同步大師」。日常單檔/小目錄用 scp;定時備份、鏡像同步、大目錄增量請直上 rsync。金鑰免密是自動化運維的基石,請務必建立標準化金鑰分發流程。