tips: ssh无密码登录 非公钥登录

很多命令需要和用户交互需要用户输入一些值,比如

tips: ssh无密码登录 非公钥登录 

tips: ssh无密码登录 非公钥登录 

一般情况下,这些命令都是可以接受STDIN输入的,也就是可以通过echo把需要的值通过管道传递给他们执行,比如

tips: ssh无密码登录 非公钥登录 

passwd命令自带--stdin选项

tips: ssh无密码登录 非公钥登录 

因为passwd修改密码时需要输入两次命令,所以即使不用--stdin选项的话,我们可以通过:

tips: ssh无密码登录 非公钥登录 

也是可以的。

但是当我们在ssh远程登录某台机器的时候,是不支持这种STDIN输入的:

先确定可以正常登录到node2,此时是需要输入密码的

tips: ssh无密码登录 非公钥登录 

如果想通过echo把密码传递给ssh,却是不行的

tips: ssh无密码登录 非公钥登录 

当然可以配置公钥的认证方式实现无密码登录,此处忽略。

那我们可以不可以让ssh接收stdin的输入呢?答案是可以的

 

创建文件sshv,内容如下:

[root@node1 ~]# cat sshv

export SSH_ASKPASS="./echo_pass"

export DISPLAY=localhost:0.0

setsid ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "root"@"node2"

[root@node1 ~]#

创建echo_pass,内容如下:

[root@node1 ~]# cat echo_pass

echo "redhat"

[root@node1 ~]#

分别给这两文件可执行权限:

tips: ssh无密码登录 非公钥登录 

此时运行ssh:

tips: ssh无密码登录 非公钥登录 

当然,更简单的方式是安装sshpass:

tips: ssh无密码登录 非公钥登录 

tips: ssh无密码登录 非公钥登录 

更便捷。

相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读