目的:
期望A服务器在对B服务器执行ssh或者scp等命令的时候不需要输入密码
实现方法:
1.通过安装sshpass服务
2.通过密钥验证的方式
操作过程:
一、通过sshpass的方式达到密码非交互
1.安装sshpass服务(centeros 7上可直接yum安装,而centeros 6必须下载文件编译安装)
yum install sshpass
2.使用sshpass命令登陆远程服务器
sshpass -p '密码' ssh [email protected]
sshpass -p '密码' scp 1.txt [email protected]:/root
二、通过密钥认证方式达到免交互免密码认证
1.通过ssh-keygen命令生成公钥
ssh-keygen -t rsa
2.在/root/.ssh/目录下会生成一个'id_isa.pub'的文件,将其拷贝到目标主机
scp /root/.ssh/id_isa.pub [email protected]:/root
3.将id_isa.pub里面的内容重定向到目标主机的/root/.ssh/authorized_keys文件中(如果没有.ssh目录和authorized_keys文件,需要自己手动创建)
cat id_isa.pub >> /root/.ssh/authorized_keys
4.此时再登陆目标主机发现不需要输入密码
sshpass方式与公钥认证对比:
做过这个小实验就不难发现,sshpass命令中附带了明文密码,这时候如果用户权限管控不到位、或者在使用ps命令发现sshpass这个进程的时候都可以看到远程主机的密码,所以不建议这种方式,极力推荐ssh的密钥认证。