关于/etc/ssh/sshd_config
在以下范围内指定Banner /etc/issue
由于只有在输入 SSH 登录值后才会显示 SSH 横幅,
是否可以根据 SSH 登录输入的用户名显示不同的(唯一的)横幅?
或者是否可以根据连接的 IP 地址使用特定的横幅?
RHEL/CentOS 7.8 中使用的 SSH 版本是否可以实现其中任何一个?
答案1
好吧,如果您的意思是为每个用户或通过 ssh 连接的 IP 地址显示不同的横幅,您可以选择这两个如下使用Match
命令;
根据用户名不同的横幅:
# put in Match section like Match User sshUser Banner /path/to/specific_banner
基于 IP 地址的不同横幅:
# put in Match section like Match Address 10.20.30.0/24 Banner /path/to/specific_banner
所以,这是可能的;您只需要重新加载即可sshd
使更改生效;如果您的 sshd 版本没有重新加载命令(在最坏的情况下),您将需要重新启动它。
答案2
另一种可能性是(至少从我的角度来看)为ssh
ing 定义一些函数,该函数将在实际进入ssh
会话之前打印一些横幅。如果你需要的话,就发挥创意吧。
示例函数:
unalias ssh 2> /dev/null
ssh ()
{
if ! { [ $# -eq 2 ] && [ -n "$1" ] && [ -n "$2" ]; } then
# shellcheck disable=SC2016
printf >&2 '%s\n' 'Expecting $1 = username, $2 = computer'
return 1
fi
case "$1" in
(user1) banner='This will be great SSH!' ;;
(user2) banner='Enjoy your SSH session!' ;;
(*) banner='Some generic banner ...' ;;
esac
printf '%s\n' \
"Entering SSH session as user $1 onto computer $2 ..." \
"$banner"
command ssh "$1"@"$2"
}
调用示例:
ssh root 192.168.0.1
输出示例:
Entering SSH session as user root onto computer 192.168.0.1 ...
Some generic banner ...
BusyBox v1.30.1 () built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
OpenWrt 19.07.3, r11063-85e04e9f46
-----------------------------------------------------