0

嗨,我有以下脚本可以通过 ssh 登录到我的服务器。

  spawn ssh presnetwork@192.168.244.14
                              expect "*(yes/no)?"
                             send "yes"
                                expect  "password:"
                                  send  "pwd\n"
                              close

它工作正常,但它没有将'pwd'值传递给系统,所以脚本超时并退出。有什么建议么?

4

2 回答 2

1

您可以尝试将“KbdInteractiveAuthentication”设置为“no”(ssh -o KbdInteractiveAuthentication="no" presnetwork@192....)。SSH 默认使用键盘交互式身份验证,这expect可能是无法理解的。

我强烈建议您改用公钥身份验证(正如 Flo 已经推荐的那样)。它更容易处理,更安全,更舒适。如果您只是在寻找一种无需每次都输入密码即可登录远程服务器的方法,请查看 ssh-agent,它会在您在桌面会话中输入一次密码后为您存储密码。如果您真的不想输入密码,请使用pam_ssh,其中将使用您的桌面登录密码。

于 2012-06-12T18:17:49.673 回答
0

默认情况下,expect 命令尚未安装。因此,您安装它以获得正确的输出。

于 2012-06-12T17:55:32.793 回答