Linux

為特定使用者禁用 SSH MOTD/Banner

  • October 11, 2018

我有一個自定義外殼,/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 nonein sshd,它沒有用。還嘗試了/etc/profile我使用 whoami 檢查該使用者的東西。

編輯:我找到了一種解決方法,作為答案發布,但我仍在尋找合適的答案。

登錄消息可能來自幾個地方。如果已配置,則首先顯示 ssh 橫幅,然後顯示內容/etc/motd(這是一個由管理員創建和維護的文本文件,或者它可能由腳本定期生成。我認為 Ubuntu 使用不同的方法 -man motd可能一些啟發…)。

最後,使用者的 shell rc 文件可以直接顯示更多消息,也可以通過呼叫其他實用程序來顯示。

如果已配置,可以通過Banner none在配置文件中設置全域禁用 ssh 橫幅,或者為了更好地控制,您可以使用類似

Match User honeypot
   Banner none

在任何一種情況下,重新啟動sshd以獲取更改。

如果要禁止/etc/motd單個使用者,請在該使用者的主目錄中創建一個名為.hushlogin. 如果此文件存在,則程序在啟動登錄 shell 之前login不會顯示 , 的內容。/etc/motd如果使用者可以登錄並獲得終端,他們可以自由刪除文件。

引用自:https://unix.stackexchange.com/questions/474752