原文借鑒:https://blog.csdn.net/weixin_33758863/article/details/85146762?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://www.cnblogs.com/yangxiaochu/p/6913533.html
方法一:基於公鑰和私鑰的信任辦法
ssh-keygen -t rsa
1、在服務器A、B中分別生成ssh-key,生成方式輸入ssh-keygen,然后連續回車
2、進入.ssh目錄,拷貝服務器B中的id_rsa.pub文件內容
3、在服務器A目錄.ssh下面新建文件authorized_keys,把服務器B中的id_rsa.pub文件內容復制進去
后續使用SCP命令遠程拷貝文件B->A,不再需要輸入密碼
方法二:sshpass
sshpass的安裝:
Ubuntu:apt-get install sshpass
centos:
下載地址:http://sourceforge.net/projects/sshpass/
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz
yum -y install gcc
tar xvzf sshpass-1.05.tar.gz
cd sshpass-1.05.tar.gz
./configure
make
make install
sshpass -p 密碼 scp -r 1.txt root@10.1.1.1:/root
sshpass -f 存放密碼的文件 scp -r 1.txt root@10.1.1.1:/root
scp基於密鑰傳輸
[root@node1 ~]# scp --help usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-iidentity_file] [-l limit] [-ossh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2 [root@node1 ~]#
語法詳解:
-1246BCpqrv:
-1 強制scp 用協議1
-2 強制scp 用協議2
-4 強制scp用IPV4的網址
-6 強制scp用IPV6的網址
-B 選擇批處理模式(防止輸入密碼)
-C 允許壓縮。 標注-C到ssh(1)來允許壓縮
-p指定修改次數,連接次數,還有對於原文件的模式
-q把進度參數關掉
-r遞歸的復制整個文件夾
-v詳細方式顯示輸出
-c cipher:選擇cipher來加密數據傳輸。
-F ssh_config: 指定ssh的配置文件
-I identity_file: 選擇被RSA認證讀取私有密碼的文件。
-I limit:限制傳輸帶寬,也就是速度 用Kbit/s的速度
-o ssh_option:可以把ssh_config中的配置格式傳到ssh中。
-P port: 指定ssh端口
-S program:指定一個加密程序。
user@ 用戶
host1 主機(可以是ip,也可以是域名)
例如:
scp -i [密鑰文件路徑] -r user@ip:要下載文件的絕對路徑 本地路徑