免密码SSH远程执行命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了免密码SSH远程执行命令相关的知识,希望对你有一定的参考价值。
我们经常需要在远程主机上执行一些命令,为了方便,可以使用一些方法来实现免密码SSH登录,比如:公钥授权的方式。但是这种方式有一些缺陷,它是针对单台机器做的授权,也就是说,如果换了一台机器,授权就失效了,还是需要手动输入密码。
其实还有另外一种通用性比较强的方式: expect。
expect是一种模拟人机交互的程序。可以用它来模拟人输入密码的过程。
使用说明:
1.将下列代码保存为一个文件,比如 remoteExecute :
#!/usr/bin/expect -f set timeout -1 set server [lindex $argv 0] set port [lindex $argv 1] set user [lindex $argv 2] set password [lindex $argv 3] set command [lindex $argv 4] spawn ssh -p $port [email protected]$server $command expect { "(yes/no)?" { send "yes\r"; exp_continue } "password:" { send "$password\r"; exp_continue } eof } catch wait result exit [lindex $result 3]
2. 然后在要使用的机器上安装 expect 程序( yum install -y expect )
3. 执行下列命令连接:
expect -f <上述remoteExecute文件的路径> <远程机器的IP地址> <ssh服务的端口> <用户名> <密码> <要执行的命令>
比如,在remoteExecute文件所在的目录执行:
expect -f remoteExecute 192.168.100.3 21069 root ‘#[email protected]!#$!‘ ‘ls /root‘
就会在当前shell 列出 192.168.100.3 的 /root 目录。
以上是关于免密码SSH远程执行命令的主要内容,如果未能解决你的问题,请参考以下文章