ssh自动登录,但用户控制之后

时间:2011-04-13 19:25:33

标签: bash login ssh expect

这是故事。 我有一个Debian 5服务器自动启动到本地用户帐户。 本地用户帐户具有以下.profile

#!/bin/bash

SERVERPASS="password"
function with_password {
expect << END
set timeout 900
spawn $2
expect *assword:*
send -- "${1}\r"
expect EOF
exit 0
END
}

cd /home/timecard
with_password $SERVERPASS "ssh timecard@192.168.254.5 -p 22"

然后以用户考勤卡的身份连接到远程计算机。

然而问题是我无法与它正常交互。当我输入时,文本不会保留在远程计算机上的程序中。

但是,当我手动连接时,它可以正常工作。

那么如何使用expect命令模仿手动登录服务器?我错过了一个命令吗?

P.S。 是的我知道自动登录很糟糕,我知道ssh autologin很糟糕等等......

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是expect EOF。这意味着您的预期通话仅在您已经注销时返回,因此您无法向此发送任何密钥。

没有这一行,同样的工作吗?

但是,当然,使用公钥验证而不是自动密码登录。


以下期望脚本适用于我的ssh(我没有启用密码验证,所以我使用“你想让主机密钥”这个问题):

#!/usr/bin/expect -f

system ssh-keygen -R localhost
spawn ssh -o StrictHostKeyChecking=ask localhost
expect "(yes/no)? "
send -- "yes\n"
interact