【问题标题】:User agreement banner in SSH secure shell serviceSSH 安全外壳服务中的用户协议横幅
【发布时间】:2014-04-22 05:26:14
【问题描述】:

我正在寻找一些帮助,以在使用 SSH 连接到远程服务器以显示消息并提示用户“是或否”时显示登录横幅。只有在输入 "yes" 时,才会在 SSH 期间提示用户输入密码。

我知道可以使用 /etc/issue.net 配置登录横幅,然后取消注释 /etc/ssh/sshd_config 中的 Banner 行,然后重新启动 SSH。但是,如果我希望另外 SSH 在显示横幅后提示接受策略横幅,我该怎么做?

提前感谢您的帮助。

【问题讨论】:

  • 在首先发布密码之前要求用户同意您想要的任何策略不是更有意义吗?对于大概授权的用户来说,这只是一个不必要的登录障碍。
  • 我明白了。但仍然只有当他们接受并说“是”时,我们才能进一步追求
  • 我认为第二句话是基于对 SSH 工作原理的误解。 AFAICT ssh 服务器无法向用户显示任何内容,直到 用户已通过身份验证。 (另外,如果用户将公钥上传到他们的authorized_keys 文件,他们将永远不会被提示输入密码。)

标签: ssh banner


【解决方案1】:

你可以使用这样的东西:

#!/bin/bash
cat /usr/share/agreement.txt
read -p "Do you accept? (y/n) " choice
if [[ $choice = y ]] ; then
        /bin/bash
fi

使用您的协议内容创建文件/usr/share/agreement.txt,并使脚本可执行(使用chmod +x)。

然后编辑/etc/passwd并设置命令运行到这个脚本的路径(例如/usr/share/agreement.sh)。

【讨论】:

  • 谢谢路易斯。但是,在用户接受协议后的 /etc/passwd 中,它仍然应该根据用户名/密码对用户进行身份验证。在上面,当你输入 "yes" 时,为什么我们有 /bin/bash ?
  • Shell 可以是any command,所以只需将/bin/bash 替换为脚本的完整路径即可。
  • 您必须为每个想要查看的用户更改它。它在用户登录后显示,但如果他们不回答“y”,则连接将被关闭。
  • "只有在输入 'yes' 时,才会提示用户在 SSH 期间输入密码。"在服务器上执行的任何操作都将在用户已经登录之后
  • 那我觉得不可能。甚至 OpenSSH 横幅也不是标准。据我所知,它仅受 O​​penSSH 客户端支持,至少它不适用于 Putty 或 ConnectBot (Android)。正常交互仅在身份验证后开始。您可以设置一个横幅,例如“登录即表示您接受协议”,但正如我所说,并非所有客户端都支持该横幅。
猜你喜欢
  • 2014-10-25
  • 1970-01-01
  • 2017-10-05
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
相关资源
最近更新 更多