歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux SCP命令詳解

Linux SCP命令詳解

日期:2017/2/28 15:49:32   编辑:Linux教程

Linux SCP 命令跟 CP 命令類似,只不過CP命令是在同一台機器上用的,SCP是在2台機器上復制的命令。

舉例說明:
復制遠程服務器的文件到本地

scp -P 999 [email protected]:/home/test.zip /home/
復制本地的目錄到遠程服務器

scp -P 999 -r /home/andy/ [email protected]:/home/
SCP 命令語法
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2

SCP 命令說明
Scp在主機間復制文件。他使用 ssh(1)作為數據傳輸。而且用同樣認證和安全性。 scp將在認證中請求輸入密碼所有的文件可能需要服務器和用戶的特別描述來指明文件將被復制到/從某台服務器。兩個遠程登錄的服務器間的文件復制是允許的。

SCP 命令選項
-1 強制scp 用協議1
-2 強制scp 用協議2
-4 強制scp用IPV4的網址
-6 強制scp用IPV6的網址
-B 選擇批處理模式(防止輸入密碼)
-C 允許壓縮。 標注-C到ssh(1)來允許壓縮
-c cipher
選擇cipher來加密數據傳輸。這個選項直接傳遞到ssh(1)
-F ssh_config
設定一個可變動的用戶配置給ssh.這個選項直接會被傳遞到ssh(1)
-i identity_file
選擇被RSA認證讀取私有密碼的文件。這個選項可以直接被傳遞到ssh(1)
-l limit
限制傳輸帶寬,也就是速度 用Kbit/s的速度
-o ssh_option
可以把ssh_config中的配置格式傳到ssh中。這種模式對於說明沒有獨立的scp文件中斷符的scp很有幫助。關於選項的如下。而他們的值請參看ssh_config(5)
-P port
指定連接遠程連接端口。注意這個選項需要寫成大寫的模式。因為-p已經早保留了次數和模式
-S program
指定一個加密程序。這個程序必須可讀所有ssh(1)的選項。
-p 指定修改次數,連接次數,還有對於原文件的模式
-q 把進度參數關掉
-r 遞歸的復制整個文件夾
-S program
指定一個加密程序。這個程序必須可讀所有ssh(1)的選項。
-V 冗余模式。 讓 scp 和 ssh(1) 打印他們的排錯信息, 這個在排錯連接,認證,和配置中非常有用。

SCP 命令診斷
scp 返回0 成功時,不成功時返回值大於0

SCP 命令不需要輸入用戶密碼的使用方法

在兩台機器的兩個用戶之間建立安全的信任關系後,可實現執行scp命令時不需要輸入用戶密碼。

1. 在機器A上root用戶執行 ssh-keygen 命令,生成建立安全信任關系的證書。

[root@ www.linuxidc.com root]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <– 直接輸入回車
Enter passphrase (empty for no passphrase): <– 直接輸入回車
Enter same passphrase again: <– 直接輸入回車
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is: ……
注意:在程序提示輸入 passphrase 時直接輸入回車,表示無證書密碼。
上述命令將生成私鑰證書 id_rsa 和公鑰證書 id_rsa.pub,存放在用戶目錄的 .ssh 子目錄中。

2. 將公鑰證書 id_rsa.pub 復制到機器B的root目錄的.ssh子目錄中,同時將文件名更換為authorized_keys。

[root@ www.linuxidc.com root]# scp -p .ssh/id_rsa.pub root@機器B的IP:/root/.ssh/authorized_keys
[email protected]’s password: <– 輸入機器B的root用戶密碼
在執行上述命令時,兩台機器的root用戶之間還未建立安全信任關系,所以還需要輸入機器B的root用戶密碼。
經過以上2步,就在機器A的root和機器B的root之間建立安全信任關系。下面我們看看效果:

[root@ www.linuxidc.com root]# scp -p test root@機器B的IP地址:/root
成功了!真的不再需要輸入密碼了。

Copyright © Linux教程網 All Rights Reserved