Bash ssh自动登录,但在

Bash ssh自动登录,但在,bash,login,ssh,expect,Bash,Login,Ssh,Expect,故事是这样的。 我有一个Debian5服务器自动启动到本地用户帐户。 本地用户帐户具有以下.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

故事是这样的。 我有一个Debian5服务器自动启动到本地用户帐户。 本地用户帐户具有以下.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"
#/bin/bash
SERVERPASS=“密码”
带密码的函数{

expect我认为这里的问题是
expect EOF
。这意味着您的expect呼叫只会在您已注销时返回,因此您无法向此发送任何密钥

没有这条线,同样的工作吗

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


以下expect脚本适用于我的ssh(我没有启用密码身份验证,因此我使用了“您想允许主机密钥吗”问题):


您知道通过分发公钥ssh自动登录很容易吗?我删除了
expect EOF
行和
exit 0
行。运行了这两个版本。现在的问题是它在任何情况下都会退出ssh会话。我需要ssh会话实时。请查看
interact
命令(在expect中)。它似乎可以满足您的要求,但我没有阅读全部文档。我尝试了interact。但是interact不允许我进入ssh连接。@dunpealslyr:我添加了一个适用于我的expect脚本。(我无法测试您的示例,因为我的网络中没有这样的服务器。)您有两个非常好的方法,我已经在一个正常的设置中测试过了。这似乎是SCO Unix和FilePro组合的一个问题。
#!/usr/bin/expect -f

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