一些超级计算机需要基于时间的一次性密码才能通过ssh登录。我希望避免每次都输入口令,并通过bash脚本自动登录/scp/rsync,在bash脚本中,我生成一次性口令,然后使用sshpass将该一次性口令传递给ssh。
sshpass -p my_password_and_OTP ssh user@hostname
此sshpass适用于通常的ssh,但我的测试表明它不适用于需要一次性密码的ssh。我想知道是否有一种方法可以非交互式地向ssh提供基于时间的一次性密码。
发布于 2019-03-03 11:59:54
这是我使用expect+oathtool的解决方案
#!/usr/bin/expect -f
set otp [exec oathtool --totp -b my_secrete_key]
set timeout -1
spawn scp a.f90 usrname@cori.nersc.gov:~/
expect "Password + OTP:"
send -- "my_passwd${otp}\r"
expect eof我使用oathtool生成一次性密码,并将结果存储在变量otp中。
https://stackoverflow.com/questions/54955447
复制相似问题