2014-04-21 32 views
1

我正在寻找一些帮助来显示登录横幅,当连接到远程服务器使用SSH显示一条消息,然后用“是或否”提示用户。只有在输入“是”时,才会提示用户在SSH期间输入密码。SSH安全外壳服务中的用户协议横幅

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

非常感谢您的帮助。

+0

在首先发布密码之前要求用户同意所需的任何策略是否更有意义?这对于大概授权的用户登录来说似乎是不必要的障碍。 – chepner

+0

我明白了。但是,只有当他们接受说“是”时,我们才会进一步追求 – user3516942

+0

我认为第二句话是基于对SSH工作方式的误解。 AFAICT ssh服务器无法向用户显示任何内容,直到用户通过身份验证之后。 (另外,如果用户将公钥上传到'authorized_keys'文件,它们将不会被提示输入密码。) – dcorking

回答

0

你可以使用这样的事情:

#!/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)。

+0

谢谢Louis。但是,在用户接受协议后,在/ etc/passwd中,它仍然应该根据用户名/密码进行认证。在上面,当你输入“yes”时,为什么我们有/ bin/bash? – user3516942

+0

此外,由于/ etc/passwd包含以下形式的条目:名称:密码:UserID:PrincipleGroup:Gecos:HomeDirectory:Shell,我们将在哪里设置命令来运行路径agreement.sh – user3516942

+1

Shell可以[任何命令]( http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/),所以只需用脚本的完整路径替换'/ bin/bash'即可。 –