tips: ssh无密码登录 非公钥登录
很多命令需要和用户交互需要用户输入一些值,比如
一般情况下,这些命令都是可以接受STDIN输入的,也就是可以通过echo把需要的值通过管道传递给他们执行,比如
passwd命令自带--stdin选项
因为passwd修改密码时需要输入两次命令,所以即使不用--stdin选项的话,我们可以通过:
也是可以的。
但是当我们在ssh远程登录某台机器的时候,是不支持这种STDIN输入的:
先确定可以正常登录到node2,此时是需要输入密码的
如果想通过echo把密码传递给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 ~]#
分别给这两文件可执行权限:
此时运行ssh:
当然,更简单的方式是安装sshpass:
更便捷。