Юбики с ожиданием не принимает пароль - PullRequest
0 голосов
/ 05 августа 2020

Недавно я приобрел свой первый Yubikey и использую команду ykman oath code на Centos 7, чтобы показать коды доступа, хранящиеся на этом ключе. Я установил пароль на yubikey, который необходимо ввести, чтобы увидеть соответствующие коды клятвы. Я пытаюсь автоматически извлечь эти коды аутентификации с помощью очень простого bash скрипта с именем yubitest.sh следующим образом

#!/bin/bash  
expect <(cat << 'EOF'   
spawn ykman oath code  
expect "Enter your password: "  
send "PASSWORD\r"  
EOF  
)  

ВЫХОД

К сожалению, ПАРОЛЬ передан на yubikey, но, похоже, не обрабатывается, и возврат этого сценария должен выполняться в командной строке следующим образом:

[laptop .ssh]$ ./yubitest.sh (make sure permissions are set to 700)  
spawn ykman oath code  
Enter your password:   
[laptop .ssh]$   

Он должен вернуть список кодов от yubikey.

Это результат работы в режиме отладки для expect (используя -d в приведенном выше скрипте после слова expect)

expect version 5.45  
argv[0] = expect  argv[1] = -d  argv[2] = /dev/fd/63    
set argc 0  
set argv0 "/dev/fd/63"  
set argv ""  
executing commands from command file /dev/fd/63  
spawn ykman oath code  
parent: waiting for sync byte  
parent: telling child to go ahead  
parent: now unsynchronized from child  
spawn: returns {29954}  

expect: does "" (spawn_id exp6) match glob pattern "Enter your password: "? no  
Enter your password:   
expect: does "Enter your password: " (spawn_id exp6) match glob pattern "Enter your password: "? yes  
expect: set expect_out(0,string) "Enter your password: "  
expect: set expect_out(spawn_id) "exp6"  
expect: set expect_out(buffer) "Enter your password: "  
send: sending "PASSWORD" to { exp6 }  

Может ли кто-нибудь помочь выделить, почему команда send для expect не передает ПАРОЛЬ правильно ? Также может кто-нибудь посоветовать, как передать результаты этого в переменную окружения?

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Я нашел хорошее решение для доступа к кодам, хранящимся на yubikey, без использования ожидаемой передачи пароля. Команда ykman сохраняет зашифрованную версию пароля для доступа к сохраненным кодам на вашем yubikey в вашем домашнем каталоге под .ykman в файле json с помощью команды ykman Remember-password. Когда yubikey вставлен и вы запускаете команду кода ykman oath, он автоматически считывает этот зашифрованный файл без дальнейшего вмешательства человека и дает желаемый результат.

0 голосов
/ 05 августа 2020

Это связано с тем, что сценарий ожидания завершается до завершения ykman. После send пароль:

expect eof
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...