sshpass+expect解决交互式问题
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,1、sshpass:使用场景:ssh登陆不能在命令行中指定密码,sshpass 的出现,解决了这一问题,用于非交互的ssh 密码验证 它支持密码从命令行,文件,环境变量中读取。安装[root@node
千家信息网最后更新 2025年01月20日sshpass+expect解决交互式问题
1、sshpass:
使用场景:
ssh登陆不能在命令行中指定密码,sshpass 的出现,解决了这一问题,用于非交互的ssh 密码验证 它支持密码从命令行,文件,环境变量中读取。
安装
[root@node6 ~]# yum install sshpass -y已安装: sshpass.x86_64 0:1.05-1.el6 完毕![root@node6 ~]#
参数:
[root@node6 ~]# [root@node6 ~]# sshpass --helpsshpass: invalid option -- '-'Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters -f filename Take password to use from file -d number Use number as file descriptor for getting password -p password Provide password as argument (security unwise) -e Password is passed as env-var "SSHPASS" With no parameters - password will be taken from stdin -h Show help (this screen) -V Print version informationAt most one of -f, -d, -p or -e should be used#这里sshpass支持三种模式,密码,文件,环境变量
案例:
简单模式:(修改端口,主机互信)[root@node3 ~]# ssh root@192.168.1.221 -p21386 'ls'Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!root@192.168.1.221's password: node2RPM-GPG-KEY-EPEL-6[root@node3 ~]##命令行下:[root@node3 ~]# sshpass -prenzhiyuan ssh root@192.168.1.221 -p21386 'ls'Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!node2RPM-GPG-KEY-EPEL-6[root@node3 ~]##文件模式:[root@node3 ~]# cat renzhiyuan renzhiyuan[root@node3 ~]# sshpass -f renzhiyuan ssh root@192.168.1.221 -p21386 'ls'Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!node2RPM-GPG-KEY-EPEL-6[root@node3 ~]##环境变量里面[root@node3 ~]# cat /etc/profile.d/renzhiyuan.sh export SSHPASS="renzhiyuan"sshpass -e ssh root@192.168.1.221 -p21386 'ls'[root@node3 ~]#[root@node3 ~]# /etc/profile.d/renzhiyuan.sh Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!node2RPM-GPG-KEY-EPEL-6[root@node3 ~]#
2、expect:
使用场景:
通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能。
而expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
[root@node6 ~]# yum install expect -y已安装: expect.x86_64 0:5.44.1.15-5.el6_4 作为依赖被安装: tcl.x86_64 1:8.5.7-6.el6 完毕![root@node6 ~]#
案例:
2.1)ssh实现自动登录,并停在登录服务器上yum install expect -y[root@node3 ~]# cat ssh.sh #!/usr/bin/expect -f set ip [lindex $argv 0 ] set password [lindex $argv 1 ]set timeout 20 spawn ssh -p21386 root@$ipexpect {"*yes/no" { send "yes\r"; exp_continue } "*password:" { send "$password\r" }} interact [root@node3 ~]# ./ssh.sh 192.168.1.221 renzhiyuanspawn ssh -p21386 root@192.168.1.221Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!root@192.168.1.221's password: Last login: Wed Dec 7 16:43:27 2016 from 192.168.1.217[root@node3 ~]##!/usr/bin/expect -f set ip [lindex $argv 0 ] //接收第一个参数,并设置IP set password [lindex $argv 1 ] //接收第二个参数,并设置密码 set timeout 10 //设置超时时间 spawn ssh root@$ip //发送ssh请滶 expect { //返回信息匹配 "*yes/no" { send "yes\r"; exp_continue} //第一次ssh连接会提示yes/no,继续 "*password:" { send "$password\r" } //出现密码提示,发送密码 } interact //交互模式,用户会停留在远程服务器上面. 2、2)根据IP和密码连接到不同的机器.[root@node3 ~]# ./ssh.sh spawn ssh -p21386 root@192.168.1.221Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!root@192.168.1.221's password: Last login: Wed Dec 7 16:43:56 2016 from 192.168.1.217[root@node3 ~]#2.3)远程登录到服务器,并且执行命令,执行完后并退出[root@node3 ~]# ./ssh.sh spawn ssh -p21386 root@192.168.1.221Address 192.168.1.221 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!root@192.168.1.221's password: Last login: Wed Dec 7 16:45:33 2016 from 192.168.1.217[root@HYXD ~]# pwd/root[root@HYXD ~]# exitlogoutConnection to 192.168.1.221 closed.[root@node3 ~]#
3、问题:(能力有限,至今寻求帮助和研究都没出来)
如果做的是有密码的ssh互信,如何利用sshpass或者except解决密钥密码交互式问题?
3.1)#sshpass -p '密码' ssh -p21345 -i renzhiyuan 用户@ip (不可取)
2.2)except脚本居然没能越过ssh密钥的密码。
欢迎大家各抒己见,互相学习进步。
密码
命令
服务器
模式
服务
问题
参数
变量
文件
环境
登录
交互式
功能
场景
密钥
案例
用户
提示
支持
不同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
路由dns服务器可能不可用
实时数据库应用领域
软件开发小说阅读
济南数字化城管软件开发电话
网络安全文明周记
大众网网络安全
网络技术公司有什么好项目
一个电商网站服务器需要多少带宽
成立一家软件开发公司
网络安全文段
钱晓平编 的软件开发教程
软件开发工具也称为CAD
360服务器管理
数据库处理员工资
eastfax服务器
废墟数据库
武装突袭3打仗服务器
注册服务器繁忙
Web服务器附件权限管理
网络安全厂商 知乎
1.8mc服务器
多功能网络技术开发常见问题
浪潮微边缘服务器价格
上海鑫恭互联网科技有限公司
网络安全等级保护的发展历程
php 服务器下载文件
伟创网络技术
幼儿数据库是什么
成都数字网络技术有限公司
网络技术指导协议