如何为各种 SSH 连接使用不同的 SSH 横幅?

ron*_*ron 8 sshd

关于/etc/ssh/sshd_config 在指定范围内Banner /etc/issue

由于在输入 SSH 登录值后才会显示 SSH 横幅,

是否可以根据为 SSH 登录输入的用户名显示不同的(唯一的)横幅?

或者是否可以根据连接的 IP 地址使用特定的横幅?

在 RHEL/CentOS 7.8 中使用的 SSH 版本是否有可能以某种方式实现?

αғs*_*нιη 18

好吧,如果您的意思是为每个用户或通过 ssh 连接的 IP 地址显示不同的横幅,那么您可以使用以下命令选择这两者Match

  1. 基于用户名的不同横幅:

    # put in Match section like
    Match User sshUser
        Banner /path/to/specific_banner
    
    Run Code Online (Sandbox Code Playgroud)
  2. 基于 IP 地址的不同横幅:

    # put in Match section like
    Match Address 10.20.30.0/24
        Banner /path/to/specific_banner
    
    Run Code Online (Sandbox Code Playgroud)

所以,这是可能的;您只需要重新加载sshd即可使更改生效;如果您的 sshd 版本没有重新加载命令(在最坏的情况下),您将需要重新启动它。


Lin*_*eak 1

另一种可能性是(至少从我的角度来看)为sshing 定义一些函数,该函数将在实际进入会话之前打印一些横幅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"
}
Run Code Online (Sandbox Code Playgroud)

调用示例:

ssh root 192.168.0.1
Run Code Online (Sandbox Code Playgroud)

输出示例:

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
 -----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

  • 但这必须在每个客户端上实现客户端,而问题则询问服务器端(`sshd_config`)横幅。 (2认同)