我很难完成这项工作:我有一个python脚本,它执行所需的步骤以获取授权URL。当我从终端运行此脚本时,我从Azure收到此消息:
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code <CODE> to authenticate.
然后,脚本会停止,直到您转到该URL并进行身份验证或发生超时。返回的错误代码为0(auth succe)或1(auth failed)。
问题是:当我想使用此脚本进行SSH身份验证时,我在/etc/pam.d/ssh中使用此行:
auth sufficient pam_exec.so stdout <path to script>
哪个不起作用:我从来没有收到过身份验证的URL,而且脚本只是超时了。但是,如果我在服务器中终止了python进程,那么我在ssh客户端中获取了URL(虽然因为进程不存在而不再有用)。
所以,似乎pam_exec转发了python进程的stdio,但只有当它终止时,其中的时间没有用。有人知道如何解决这个问题吗?也许使用另一个pam模块?谢谢!
答案 0 :(得分:0)
好的,我终于理解了整个问题。似乎SSH(我不知道服务器或客户端)将所有不提示的消息打包在一起并将它们作为SSH标题消息发送。这意味着服务器或客户端充当缓冲区,因为它们是信息性消息。
因此,解决方案是将消息作为提示发送,因为这会强制客户端在收到消息后立即打印它(然后只是丢弃用户的答案)。