首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不接受密码的Yubikey

不接受密码的Yubikey
EN

Stack Overflow用户
提问于 2020-08-05 11:40:27
回答 2查看 179关注 0票数 0

我最近购买了我的第一个Yubikey,我正在使用Centos 7上的ykman宣誓代码命令来显示存储在这个密钥上的密码。我在yubikey上放了一个密码,必须输入这个密码才能看到适当的宣誓码。我试图使用一个非常简单的bash脚本yubitest.sh自动提取这些auth代码,如下所示

代码语言:javascript
复制
#!/bin/bash  
expect <(cat << 'EOF'   
spawn ykman oath code  
expect "Enter your password: "  
send "PASSWORD\r"  
EOF  
)  

输出

不幸的是,密码被传递给yubikey,但似乎没有被处理,这个脚本的返回将通过命令提示符,如下所示

代码语言:javascript
复制
[laptop .ssh]$ ./yubitest.sh (make sure permissions are set to 700)  
spawn ykman oath code  
Enter your password:   
[laptop .ssh]$   

它应该从yubikey返回一个代码列表。

这是expect在调试模式下的输出(在单词expect之后使用上面脚本中的-d )

代码语言:javascript
复制
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 }  

有人能帮助突出显示expect的send命令为什么没有正确传递密码吗?另外,有人能建议如何将结果传递给环境变量吗?

EN

回答 2

Stack Overflow用户

发布于 2020-08-05 15:33:23

这是因为expect脚本在ykman完成之前就退出了。在您send密码之后:

代码语言:javascript
复制
expect eof
票数 0
EN

Stack Overflow用户

发布于 2020-08-07 01:37:10

我找到了一个很好的解决方案,可以访问存储在yubikey上的代码,而无需使用expect来传递密码。ykman命令使用ykman记忆密码命令将密码的加密版本存储在json文件中的主目录中的yubikey上访问存储的代码。当插入yubikey并运行ykman宣誓代码命令时,它会自动读取这个加密文件,而无需进一步人工干预并提供所需的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63264401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档