gpt4 book ai didi

bash - 从脚本使用otp调用ssh

转载 作者:行者123 更新时间:2023-12-02 13:58:57 25 4
gpt4 key购买 nike

我的公司使用ssh上的OTP(一次性密码)来访问我们的生产机器。交互可能看起来像这样:

$ ssh prod
otp-md5 942 st9621 extResponse:

此时,我运行一个Java程序,以使用从SSH获得的信息生成OTP响应。 注意:必须将ssh输出(在此示例中为“942 st9621”)中的哈希值作为输入传递给波纹管。每当您使用ssh时,此哈希值都会更改。
$ java -jar jop.jar 942 st9621 <password>
LAD DARN BHOY TEST ACHE JUTE

现在,我将生成的OTP(“LAD DARN BHOY TEST ACHE JUTE”)剪切并粘贴到另一个控制台窗口中。

因此,为了使所有事情变得清楚:我在运行jop和密码的同时,需要使用ssh命令生成的数据,然后将结果传递回仍在运行的ssh命令。

我很想自动化这个过程。基本上,有一个bash脚本,它需要一个主机名,要求输入密码,然后调用ssh,将otp-md5代码传递给jop,然后将OTP传递回ssh。一个不错的选择是 而不是不必输入我的密码作为命令行参数,因为这将被存储在命令历史记录中,这是一个很大的安全问题。

这可能吗?

谢谢

最佳答案

未经测试。期望脚本可能类似于

#!/usr/bin/env expect
set otp [exec java -jar jop.jar 942 st9621 [lindex $argv 0]]
spawn ssh prod
expect -re {extResponse: *$}
send -- "$otp\r"
interact

您可以这样使用: optssh.exp <password>
响应更新,仍然未经测试。
#!/usr/bin/env expect
spawn ssh prod
expect -re {otp-md5 ([^ ]+) ([^ ]+) extResponse: *$} {
set otp [exec java -jar jop.jar $expect_out(1,string) $expect_out(2,string) [lindex $argv 0]]
send -- "$otp\r"
}
interact

关于bash - 从脚本使用otp调用ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com