Как не-интерактивно кормить SSH одноразовым паролем на основе времени? - PullRequest
0 голосов
/ 02 марта 2019

Некоторые суперкомпьютеры требуют одноразового пароля (OTP) для входа в систему через ssh.Я хочу не вводить пароль каждый раз и автоматизировать вход в систему / scp / rsync через bash-скрипт, в котором я генерирую одноразовый пароль, а затем передаю одноразовый пароль в ssh с помощью sshpass:

sshpass -p my_password_and_OTP ssh user@hostname

Этот sshpass работает для обычного ssh, но мое тестирование показывает, что оно не работает для ssh, требующего одноразовый пароль.Мне интересно, есть ли способ не интерактивно кормить ssh одноразовым паролем на основе времени.

1 Ответ

0 голосов
/ 03 марта 2019

Вот мое решение с использованием 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.

...