Ubuntu 10.04 使用 ssh 无需输入密码

Ubuntu 10.04 使用 ssh 无需输入密码

我知道以前有人问过类似的问题,并且我已经阅读了(我找到的)所有问题。

我遇到的问题是,我们有一个嵌入式 Linux 设备,我们可以通过执行以下操作登录该设备进行调试:

ssh root@name

然后密码可以是任意的(我通常只需按回车键)。我不想在嵌入式设备/Linux 上更改任何东西。但我确实希望能够(作为我的脚本的一部分)通过 ssh 进入它。

我的研究表明可以使用以下内容(这是从另一篇文章中复制的):

#!/usr/bin/expect -f
spawn ssh [email protected]
expect "assword:"
send "mypassword\r"
interact

但是,在我的 Ubuntu 版本 (10.04) 中,我没有 spawn 或 send 命令。我可以使用 sudo apt-get install expect 安装“expect”命令。

有人有解决方案吗?是否可以安装这些命令,或者是否有其他方法可以通过 ssh 并完成“密码”步骤?

谢谢 :)

- - - - - - - 编辑 - - - - - - - - -

我想我开始明白我遇到的问题了。我有一个以以下内容开头的脚本:

#!/bin/bash

然后我尝试做:

spawn ssh [email protected]
expect "assword:"
send "mypassword\r"
interact

我没有意识到你明确需要:

#!/usr/bin/expect -f

在脚本开始时,所以我必须将我的代码移到一个单独的文件中,该文件仅包含以下内容:

#!/usr/bin/expect -f
spawn ssh [email protected]
expect "assword:"
send "mypassword\r"
interact

... 抱歉我理解错了,但人们的回答帮助我弄清楚了我在做什么。这对我来说不太理想,因为我想传递参数来打开不同的 ssh 连接,而我无法将参数传递给以“expect -f”开头的脚本 :(

答案1

我认为您正在尝试将脚本作为 shell 脚本运行。安装后expect,按如下方式运行脚本:

expect -f scrip.exp

如果您无法以普通用户身份安装 expect,请尝试将其二进制文件安装在您的某个目录中,$HOME然后从那里$HOME/opt/调用expect,尽管这取决于您的系统如何操作来LD_LIBRARY_PATH添加另一个用于搜索动态库的目录。

嵌入期望的一个例子:

#!/bin/bash

USER=$1
SERVER=$2
PASSWORD=$3

expect <<EOF
spawn ssh "${USER}@${SERVER}"
expect "assword:"
send "${PASSWORD}\r"
interact
EOF

运行

bash script.sh user server password

相关内容