免密码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 $user@$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 '#$@!#$!' 'ls /root'

就会在当前shell 列出 192.168.100.3 的 /root 目录。

 


本文转自 Bruceweien 51CTO博客,原文链接:http://blog.51cto.com/bruceweien/1932414


相关文章
|
Linux 网络安全
Linux命令(124)之ssh
Linux命令(124)之ssh
320 2
|
网络安全 数据安全/隐私保护
ssh远程执行命令自动输入密码方式
ssh远程执行命令自动输入密码方式
4470 0
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
1322 0
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
935 2
|
Ubuntu Shell Linux
使用sshpass工具通过SSH执行远程命令
`sshpass`是一个用于在脚本中自动输入SSH密码的工具 **在Debian/Ubuntu上安装sshpass:** ```bash sudo apt-get install sshpass ``` **在CentOS/RHEL上安装sshpass:** ```bash sudo yum install sshpass ``` **在Fedora上安装sshpass:** ```bash sudo dnf install sshpass ``` 安装完成后,你可以使用`sshpass`命令通过SSH执行远程命令。以下是一个示例: ```bash sshpass -p 'yo
2044 0
|
安全 Linux 网络安全
SSH命令详解
SSH命令详解
433 0
SSH命令详解
|
安全 网络协议 Linux
Linux ssh 命令详解
Linux ssh 命令详解
617 0
|
Cloud Native 网络安全 Go
SSH连接服务器后执行多条命令
SSH连接服务器后执行多条命令
529 0
|
安全 网络协议 Linux
Linux ssh 命令详解
Linux ssh 命令详解
584 0
|
安全 Linux Shell
SSH 命令完整实用指南 | Linux SSH 服务
【8月更文挑战第20天】
2356 0