linux - 使用 pam_exec 进行 Azure 身份验证

标签 linux azure pam

我很难完成这项工作:我有一个 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(验证成功)或 1(验证失败)。

问题是:当我想使用这个脚本进行 SSH 身份验证时,我在/etc/pam.d/ssh 中使用这一行:

auth sufficient pam_exec.so stdout <path to script>

这不起作用:我从来没有返回要进行身份验证的 URL,并且脚本只是超时。但是,如果我终止服务器中的 python 进程,那么我会在 ssh 客户端中获取 URL(尽管不再有用,因为该进程不存在)。

所以,似乎pam_exec转发了python进程的stdio,但只有当它终止时,其中的时间才有用。有人知道如何解决这个问题吗?也许使用另一个 pam 模块?谢谢!

最佳答案

好吧,我终于明白了整个问题。看来SSH(我不知道是服务器还是客户端)将所有不是提示的消息打包在一起,并将它们作为SSH横幅消息发送。这意味着服务器或客户端都充当缓冲区,因为这些是信息性消息。

因此,解决方案是将消息作为提示发送,因为这会强制客户端在收到消息后立即打印它(然后丢弃用户答案)。

关于linux - 使用 pam_exec 进行 Azure 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051327/

相关文章:

linux - 为什么 echo $JAVA_HOME 对于所有用户来说都不相同

regex - 在unix上使用命令行修改sql文件

regex - Sed/awk/RegEX 返回以三个冒号结尾的行

python - 如何从 Repo 安装 jasmin SMS Gateway the systemd

java - 在 Azure CosmosDB 上添加附件

c++ - glibc mysql_stmt_close 释放坏内存?

Linux bash从文件中读取然后将用户添加到linux

c# - 使用 mvc 在 azure 表中设置 etw 日志

visual-studio-2010 - 构建自动部署到 Azure 的工具?

c - PAM pam_sm_close_session 没有启动