【发布时间】:2012-10-29 04:58:12
【问题描述】:
我意识到这个问题已被问过几次,但我在搜索的任何地方都找不到相关的答案。
我在一个安全不是问题的开发环境中工作,任何人只要考虑几秒钟就可以猜出密码。
我想做的很简单。我在我的本地 .bashrc 文件中创建了一个别名函数,我希望这个函数能够使用默认密码自动登录机器。
我当前的实现如下所示:
function s () {
ssh root@192.168.1.$1
}
当我运行它时,我会得到这样的结果:
~]s 122
ssh root@192.168.1.122
root@192.168.1.122's password:
使用 Bash,而不是使用 RSA 密钥我想让它使用默认密码“密码”。
我已经尝试了以下已设置 IP 和用户的方法。
Do=$(expect -c "
spawn ssh $User@${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}
expect \"yes/no\"
send \"yes\r\"
expect \"assword\" send \"password\"")
echo $Do
$Do
它给出了以下错误:
Connecting and logging into server using expect
usage: send [args] string
while executing
"send"
invoked from within
"expect "assword" send "password""
Administrator@192.168.1.176's password:
bash: spawn: command not found...
使用以下命令我可以连接一台机器。如果我删除了交互,它只会运行 uptime 命令并关闭连接。使用交互命令,我无法看到我正在输入的内容或实际与机器交互。有什么想法吗?
Do=$(expect -c "spawn ssh $User@${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]}; set timeout 4; expect \"assword\"; send \"password\n\"; expect \"test\"; send \"uptime\n\"; interact;");echo $Do;
【问题讨论】:
-
spawn 命令是否设置了环境?如果没有,则不会设置路径,并且它不知道在哪里寻找“ssh”。尝试将完整路径放入可执行文件。
-
只是想知道,您对 RSA 密钥的反感是什么?设置新系统时,我总是做的第一件事就是授权 RSA 密钥。
-
我不想使用 RSA 密钥,因为我正在使用许多生命周期非常有限的不同服务器,而且这个脚本将被很多人使用。这个想法是无需每次都输入相同的密码,从而节省时间。如果我每次第一次访问新机器时都必须输入密码来 ssh-copy-id ,那么它上面的密钥就达不到目的了。
-
@Jay 你是说 expect 的 spawn 命令不知道如何处理 ssh 而我应该改用 /bin/ssh 吗?
-
@SuperTetelman,为什么不将 RSA 密钥与脚本一起提供并让脚本使用
ssh -i <key>?