Linux下远程拷贝时无需输入密码

本文主要介绍Linux系统中,远程拷贝文件时无需输入密码来拷贝的一种简单办法。

我们在远程拷贝文件时,尤其是不同地区的服务器之间拷贝数据,一般是使用scp或者rsync来拷贝。这两个命令都需要输入密码。
一般来说,有三种办法来实现无密码拷贝。
(1)SSH等效性建立信任关系
(2)使用expect脚本来自动输入密码
(3)使用sshpass工具来自动输入密码
本文重点介绍sshpass工具来实现,这个工具比较简单。

1. sshpass命令

如果系统中没有sshpass命令,则通过如下命令可以安装:

1
# yum -y install sshpass

sshpass命令的使用方法:

1
2
# sshpass -p 123456 ssh 192.168.1.100                  		   -p参数是服务器192.168.1.100的密码,这样就可以直接登录了
# sshpass -f password.txt ssh 192.168.1.100 -f参数是file,密码文件,默认读取文件的第一行作为密码

2. sshpass实现远程拷贝

1
2
3
# sshpass -f password.txt scp -r /opt/packs/xxx.iso  root@192.168.1.100:/root/packs/
# sshpass -f password.txt rsync -a /opt/packs/xxx.iso root@192.168.1.100:/root/packs/
# nohup sshpass -f password.txt rsync -a /opt/packs/xxx.iso root@192.168.1.100:/root/packs/ & 也可以使用nohup在后台跑

这里建议使用sshpass的-f参数来存放密码,然后执行

1
# chmod 600 password.txt

这样只有root才可以读写,保证了安全性。-p直接在命令行输入密码不安全。

---------------- The End ----------------