0

我的雇主最近增加了我们日常密码所需的字符数,并在要求中增加了空格。从那以后,我用来通过 ssh 登录 linux 系统的宏一直失败。据我所知,我已经更新了我的 LogMeTT 脚本以容纳密码中的空格。

passwordbox msg 'Get password'
usrpass = inputstr
;updated to accommodate spaces in passwords
strinsert usrpass 1 '"'
strlen usrpass
strl = result
strl = strl+1
strinsert usrpass strl '"'

如果我只需要登录系统而不使用 SSH 跳转到下一个系统,则此更新工作正常。我们的大部分访问都需要我们登录到一个系统,然后通过 SSH 连接到下一个系统。正是在这一点上,宏似乎失败了。系统会反复提示我输入密码。SSH 调试似乎没有显示任何错误...

Password:
debug3: send packet: type 61
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug2: userauth_kbdint
debug3: send packet: type 50
debug2: we sent a keyboard-interactive packet, wait for reply
debug3: receive packet: type 60
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1

如果我打破了我的宏(如果出现提示,它将不断发送密码),我可以手动输入我的密码并登录,而无需重复提示输入密码。

我用来登录的一些宏...

sendln 'ssh -v -v -v ' conname
:cnct
wait newconnectprompt 'Password: ' 'Authentication failed.'
if result=1 then
    sendln 'yes'
    mpause 500
    goto cnct
elseif result=2 then
    mpause 500
    send usrpass
    mpause 500
    sendln ''
    goto cnct
elseif result=3 then
    mpause 500
    sendln 'ssh -v ' conname
    goto cnct
endif

我通常不在调试中运行 ssh,但为了排除故障......

在 result=2 部分下,我通常只使用 sendln 发送 usrpass 但在这里我尝试将 send 和 sendln 结合起来,认为注入一些时间可能会起作用。

是否有可能我应该传递给 ssh 的选项或可能有效的 LogMeTT 技巧?

4

0 回答 0