我有一个自定义外壳,/bin/
它返回回声并存在。我有一个仅链接到该 shell 的用户,这样当有人尝试仅通过 pubkey 使用该用户 ssh 进入服务器时,自定义 shell 将回显某些内容并立即退出(在回显后立即关闭 ssh 连接)。
问题是它正在工作,但在身份验证后显示默认的 Ubuntu MOTD / Banner,而我只想返回回显。
预期的
local@sever:~$ ssh honeypot@remote-server
Welcome 1.2.3.4 | you've been logged
Connection to remote-server closed.
local@server:~$
怎么了
local@sever:~$ ssh honeypot@remote-server
Welcome to Ubuntu 16.04.x LTS (GNU/Linux x.x.x-xxx-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
6 packages can be updated.
0 updates are security updates.
New release '18.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*** System restart required ***
Last login: Thu Oct 2 01:08:16 2017 from 1.2.3.4
Welcome 1.2.3.4 | you've been logged
Connection to remote-server closed.
local@server:~$
注意:我不想为所有其他用户禁用 MOTD/Banner,并且我已经尝试过Match User honeypot Banner none
sshd,但它不起作用。还尝试了/etc/profile
我使用 whoami 检查该用户的方法。
编辑:我找到了一个解决方法,作为答案发布,但我仍在寻找合适的答案。
答案1
登录消息可能来自几个地方。如果配置,则首先显示 ssh 横幅,然后显示/etc/motd
(这是一个由管理员创建和维护的文本文件,或者可以由脚本定期生成的文本文件的内容)。我认为 Ubuntu 使用不同的方法 -man motd
可能一些启发...)。
最后,用户的 shell rc 文件可以直接或通过调用其他实用程序显示更多消息。
如果已配置,则可以通过Banner none
在配置文件中设置来全局禁用 ssh 横幅,或者为了更好地控制,您可以使用类似
Match User honeypot
Banner none
无论哪种情况,请重新启动sshd
以使更改生效。
如果要抑制/etc/motd
单个用户,请在该用户的主目录中创建一个名为.hushlogin
.如果此文件存在,程序在启动登录 shell 之前login
将不会显示 , 的内容。/etc/motd
如果用户可以登录并获得终端,他们就可以随意删除该文件。
答案2
解决方法
local@sever:~$ ssh honeypot@remote-server <*>
Welcome 1.2.3.4 | you've been logged
local@server:~$
<*>:字面上是任何命令、单词或数字。