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