linux - SSH 脚本横幅打印源然后执行
问题描述
所以我为我的 SSH 服务器创建了一个 bash 脚本横幅,非常简单。它位于 profile.d 中:
/etc/profile.d/ssh_banner.sh
我编辑了 sshd_config 文件如下:
# no default banner path
Banner /etc/profile.d/ssh_banner.sh
但是,当我登录服务器时,在执行脚本并显示输出之前,它会立即显示脚本的源;
adam@adam-ThinkPad-T470s:~$ ssh adam@<IP_ADDRESS> -p 51536
#!/bin/bash
#Colours
red="\033[00;31m"
RED="\033[01;31m"
green="\033[00;32m"
GREEN="\033[01;32m"
brown="\033[00;33m"
YELLOW="\033[01;33m"
blue="\033[00;34m"
BLUE="\033[01;34m"
purple="\033[00;35m"
PURPLE="\033[01;35m"
cyan="\033[00;36m"
CYAN="\033[01;36m"
white="\033[00;37m"
WHITE="\033[01;37m"
NC="\033[00m"
echo -e "${WHITE}******************************************************************************"
echo -e "${WHITE}** **"
echo -e "${WHITE}** Powered By Raspbian **"
echo -e "${WHITE}** **"
echo -e "${YELLOW}******************************************************************************"
CPUMOD=$(cat /proc/cpuinfo | grep -m 1 -w 'model name' | awk -F: '{print $2}')
HOSTNAME=$(uname -n)
KERNEL=$(uname -r)
MEMTOTAL=$(cat /proc/meminfo | grep -m 1 -w 'MemTotal' | awk -F: '{print $2}')
MEMFREE=$(cat /proc/meminfo | grep -m 1 -w 'MemFree' | awk -F: '{print $2}')
SWAPTOTAL=$(cat /proc/meminfo | grep -m 1 -w 'SwapTotal' | awk -F: '{print $2}')
SWAPFREE=$(cat /proc/meminfo | grep -m 1 -w 'SwapFree' | awk -F: '{print $2}')
echo -e "** ${YELLOW}Unauthorised access to this network is strickly FORBIDDEN **"
echo -e "** ${YELLOW}If you havn't been given authorisation ${RED}LOGOUT IMMEDIATELY!${YELLOW} **"
echo -e "**${YELLOW} This logon has been recored **"
echo -e "${YELLOW}******************************************************************************"
echo -e ""
echo -e "${WHITE} Welcome ${YELLOW}${USER}${WHITE}"
echo -e ""
echo -e "${WHITE} Date: "`date`
echo -e ""
echo -e "${WHITE} Hostname: ${HOSTNAME}"
echo -e "${WHITE} CPU Model: ${CPUMOD}"
echo -e ""
echo -e "${WHITE} Total Memory: ${MEMTOTAL}"
echo -e "${WHITE} Free Memory: ${MEMFREE}"
echo -e ""
echo -e "${WHITE} Swap Total: ${SWAPTOTAL}"
echo -e "${WHITE} Swap Free: ${SWAPFREE}"
echo -e ""
# Reset Terminal Colour Back to Normal
echo -e "${NC}"
Last login: Wed Nov 7 12:56:47 2018 from <IP_ADDRESS>
******************************************************************************
** **
** Powered By Raspbian **
** **
******************************************************************************
** Unauthorised access to this network is strickly FORBIDDEN **
** If you havn't been given authorisation LOGOUT IMMEDIATELY! **
** This logon has been recored **
******************************************************************************
Welcome adam
Date: Wed 7 Nov 13:18:42 UTC 2018
Hostname: pi
CPU Model: ARMv7 Processor rev 4 (v7l)
Total Memory: 949448 kB
Free Memory: 781588 kB
Swap Total: 102396 kB
Swap Free: 102396 kB
adam@pi:~ $
在通知上次登录的行之后打印出预期的横幅,我尝试将 ssh_banner.sh 放在其他目录中,这导致 ssh 仅打印源,而没有执行的输出。/etc/profile.d 是 SSH 执行横幅的唯一目录。
我不明白为什么会这样,如果有人可以提供帮助,我将不胜感激。
解决方案
正如文档所述,sshd
不执行或获取您的横幅:ssh_banner.sh
横幅
在允许认证之前,指定文件的内容被发送给远程用户。如果参数为“none”,则不显示横幅。此选项仅适用于协议版本 2。默认情况下,不显示横幅。
如果您将横幅放在ssh_banner.sh
下面,/etc/profile.d
则横幅是通过正常登录过程获取的,与sshd
.
因此,您可以#
在 Banner 行前面添加评论,sshd_config
并且ssh_banner.sh
仍然可以在正常登录下获取。
推荐阅读
- javascript - 有没有办法在 CSS/HTML/JS 中以三角形/金字塔方式生成六边形?
- sql - 查询优化/重写
- git - 如何让我的网络服务器从我的仓库自动更新?
- python - 错误:关机后无法注册 atexit
- google-oauth - Facebook/Google 登录 API,如何确保用户不是机器人
- python - 如何使用云运行python api从大查询表中读取大数据以及系统配置应该是什么?
- php - Laravel 如何让 Auth 类在不同的模型而不是用户上执行函数
- python - Kivymd:无法在 Scrollview 中添加多个文本字段和按钮
- sql - SQL FOR XML 属性和值
- php - 使用 FTP 类从 codeigniter 2 中的 ftp 下载文件