创新路
我们一直在努力

三种方法实现scp时无需密码输入

1、建立SSH的信任关系

首先创建密钥,然后将刚才创建的~/.ssh/id_rsa.pub文件中的内容拷贝添加到另外主机上的~/.ssh/authorized_keys文件中(如果没有则创建一个)

2、使用sshpass工具来自动输入密码

sh登陆不能在命令行中指定密码,需要用户交互输入密码,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,

它支持密码从命令行、文件、环境变量中读取。所以,通过sshpass实现以非交互的形式为ssh提供密码。

具体安装使用详见百度,但是这个工具,不推荐在生产环境中使用,因为使用时会涉及到明文密码,大大降低了安全性。

image.png

3、使用expect脚本来自动输入密码

expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具,定义在scp过程中可能遇到的情况,然后编写相应的处理语句,就可以自动地完成scp操作了。

首先安装expect:

yum -y install expect

SSH登录脚本:   

#!/usr/bin/expect

set timeout 30

spawn ssh root@192.168.1.93

expect "password:"

send "123456@\$abcdef\r"

interact

SCP传送文件脚本:   

#!/usr/bin/expect

set timeout 30

spawn scp /usr/local/src/zbx_redis_stats.py root@192.168.1.93:/usr/local/src/

expect "password:"

send "123456@\$abcdef\r"

interact

注意:密码有特殊字符如“$”需要转义;

   密码以“\r”结尾。

未经允许不得转载:天府数据港官方信息博客 » 三种方法实现scp时无需密码输入

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机