scp
(安全複製)是一個用於安全地將文件複製到遠程主機和從遠程主機複製的命令。它在內部使用 SSH 來執行操作。
安裝 scp 命令
scp
包含在 OpenSSH 客戶端包中。 (openssh-server
該軟件包提供了一個 SSH 守護進程, openssh-client
這個包提供了各種 SSH 相關的工具。 )
對於 Ubuntu/Debian(和衍生產品)
可以安裝 scp
使用 apt 命令。
sudo apt install openssh-client
對於 Fedora/CentOS(基於 RedHat 的發行版和衍生產品)
可以安裝 scp
使用 dnf 命令。
sudo dnf install openssh-clients #the name has an extra 's'
筆記: 文件傳輸方式 scp
, 那 應該這樣做 對發送者和接收者可見。嘗試 scp
在你沒有的機器上 scp
安裝時可能會收到錯誤消息 scp: command not found
你可能有 scp
本地安裝。
scp的基本用法
scp 命令的核心是從源獲取文件並將其複製到目標。
scp <source> <target>
有幾種方法可以指定 source
什麼時候 target
常見的有:
從本地機器複製到遠程機器
scp path/to/local_file remote_host:path/to/remote_file
這裡 remote_host
能夠
- IP地址
- 域名
- 定義主機
/etc/hosts
文檔 - 定義主機
~/.ssh/config
例如,複製文件 me.png
在您的主目錄中,從您的本地計算機 ubuntu-server
(被定義為 /etc/hosts
), 我可以打字。
scp /home/pulsar17/me.png ubuntu-server:~/me.png
如果我以用戶身份運行此命令 pulsar17
同一用戶 一定是 此語法在目標機器上可見。 target
去工作。
從遠程機器複製到本地機器
要從遠程機器複製到本地機器,只需切換源和目標。該命令仍需要運行 在您的本地機器上.
scp remote_host:path/to/remote_file path/to/local_directory
對於此命令,運行此命令的用戶必須同時存在於本地和遠程計算機上。
複製為遠程計算機上的特定用戶
您還可以在復制時指定用戶。 scp
複製文件並將所有者更改為 user
.
scp path/to/local_file [email protected]_host:path/to/remote_file
以下命令將復制 me.png
到遠程機器,但作為用戶 juniordev
.
scp /home/pulsar17/me.png [email protected]:~/me.png
此語法允許您以您有權訪問的遠程計算機上的任何用戶身份進行複制。
以特定用戶身份從遠程計算機複製 只需切換源和目標。
方便的選擇
scp
有很多選擇。這裡有一些有用的。
帶有 -r 選項的 scp
利用 -r
您可以選擇以遞歸方式複制目錄(所有文件和子目錄)。
scp -r /home/pulsar17/scripts ubuntu-server:~/

上面的命令會復制整個 scripts
將目錄複製到遠程計算機。
帶有 -p 選項的 scp
這個選項 scp
保留原始文件的修改時間、訪問時間和模式。
帶有 -q 選項的 scp
啟用安靜模式。它還禁用來自 ssh 的進度表以及警告和診斷消息。
scp -q /home/pulsar17/me.png ubuntu-server:~/

SSH配置,scp好用
如果您覺得有必要使用 scp
在許多情況下,您可以以節省時間和打字的方式設置您的環境。有兩種方法可以做到這一點:
在配置文件中添加一個公共主機
有兩個地方可以將 IP 地址映射到名稱,因此您不必多次輸入它們。 在您的本地機器上。 這些是 /etc/hosts
文件和 ~/.ssh/config
.
如果您需要使用特定於 SSH 的選項, ~/.ssh/config
. 顯示如何使用這兩個文件進行配置。請僅使用其中一種。
文檔~/.ssh/config
打開 ~/.ssh/config
該文件位於您選擇的編輯器中。 使用納米編輯器:
nano ~/.ssh/config
添加以下行:
Host ubuntu-server User root HostName 192.168.1.168 #Port 22002 You can specify a port too
保存文件並退出 nano。您可以將多個主機添加到此文件。完成此配置後,您可以將其替換為 [email protected]_host
配置文件中對應主機後的名稱。例如,您可以使用:
# Instead of scp /home/pulsar17/me.png [email protected]:~/me.png just type scp /home/pulsar17/me.png ubuntu-server:~/me.png
/etc/hosts
文檔
此文件包含 IP 地址到主機名的映射(例如鍵值映射)。 IP地址映射 192.168.1.11
姓名 my-server
, 類型:
echo 192.168.1.11$'t'my-server | sudo tee -a /etc/hosts
這個 $'t'
是打印的文本 Tab
文件中的字符。
完成此操作後,您可以使用製表符完成來擺脫 bash。輸入新映射的名稱後(my-server
在這種情況下) scp
只需鍵入命令的前幾個字母,然後按 Tab
, Bash 自動完成名稱。 (但是,用戶名是必需的;它只是自動完成主機名。)
SSH 密鑰而不是密碼
SSH 密鑰可以代替傳統的基於密碼的身份驗證來登錄遠程機器。 按照本教程設置 SSH 密鑰。你只需要做一次。
結論是
scp
一個非常有用的命令,用於安全地將文件從一台機器複製到另一台機器。在本文中,我們了解了不同的選項 scp
它還解釋瞭如何設置 ssh 密鑰和適當的配置文件以利用其功能。