![在让其他人通过 SSH 登录之前要求本地用户确认](https://linux22.com/image/107246/%E5%9C%A8%E8%AE%A9%E5%85%B6%E4%BB%96%E4%BA%BA%E9%80%9A%E8%BF%87%20SSH%20%E7%99%BB%E5%BD%95%E4%B9%8B%E5%89%8D%E8%A6%81%E6%B1%82%E6%9C%AC%E5%9C%B0%E7%94%A8%E6%88%B7%E7%A1%AE%E8%AE%A4.png)
我想知道是否有办法要求本地用户(通过 GUI 登录)确认/拒绝任何其他身份验证尝试,例如有人尝试通过 SSH 登录?
场景是这样的,我可能希望将我的 SSH 密钥留在用户的计算机上,以便在出现问题时能够调试或帮助他们,但同时我希望他们保持控制,所以我和其他人都没有窃取我的 SSH 密钥将能够登录,至少不需要用户的确认(用户希望我事先告诉他们我会登录,所以如果没有发生,他们会拒绝连接)。
这可能吗?该机器运行的是 Ubuntu 16.10,具有默认的 Unity 桌面环境。
答案1
是的。使用自定义 PAM 模块应该可以实现这一点,因为/etc/pam.d/sshd
该模块会使用 Zenity 等向用户发出提示。但这种 QA 并不是一种为您编写整个脚本的格式。
答案2
这是愚蠢的请求,但可以使用指向 shell 包装器的命令,该命令将检查例如文件是否存在,如果该文件存在于服务器上,则会话不会以“退出”结束,并允许 shell 指定SSH_ORIGINAL_COMMAND。
但无论如何...可以创建两个具有相同 UID 但不同用户名的用户帐户。因此,对于真正的用户来说,一切都会像往常一样工作,对于支持人员来说,他会将 /sbin/nologin 作为远程计算机上的默认 shell。如果支持人员需要登录,远程计算机管理员会将其 shell 更改为例如。 bash 和会话会起作用。然后管理员可以踢出支持者并将其 shell 改回 /sbin/nologin。