原文借鉴: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:要下载文件的绝对路径 本地路径