ssh自动登录,但用户控制在

问题描述

这是故事。 我有一个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命令模拟手动登录服务器?我错过命令了吗? 附言 是的,我知道自动登录是不好的,我知道ssh autologin是不好的,等等。     

解决方法

我想这里的问题是ѭ1。这意味着只有在您注销后,您的期望呼叫才会返回,因此您无法发送任何密钥给它。 没有这条线,同样的工作吗? 但是,当然,请使用公钥身份验证而不是自动密码登录。 下面的Expect脚本可用于ssh(我没有启用密码身份验证,因此我使用的是“是否要允许主机密钥”问题):
#!/usr/bin/expect -f

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