我有一台 ubuntu20 服务器,/etc/profile.d 中的一个 bash 脚本会在有人使用 ssh 连接时向 telegram 发送一条消息。此脚本的目的是查明是否存在黑客攻击并采取行动。
我想知道连接到 ssh 的计算机的名称,以便将其包含在电报消息中,以查看连接者是我团队中的某个人还是黑客。我尝试将 whoami 结果存储在变量中,但它显示的是 linux 用户名,而不是连接者的计算机用户名。我可以在连接的设备上执行 whoami 命令吗?或者任何其他方式来满足我的想法。bash 代码:
#!/usr/bin/env bash
# Import credentials form config file
. /home/roots/credentials.config
URL="https://api.telegram.org/bot${KEY}/sendMessage"
DATE="$(date "+%d %b %Y %H:%M")"
if [ -n "$SSH_CLIENT" ]; then
ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
TEXT=" New login via ssh, username ${USER} IP (*${ip}*)
Date: ${DATE}"
curl -s -d "chat_id=${USERID}&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
fi
答案1
根据帖子 确定当前通过 SSH 连接的主机名称:
ssh
设置环境变量$SSH_CONNECTION
以包含以空格分隔的客户端 IP 地址、客户端端口号、服务器 IP 地址和服务器端口号。您可以使用
echo ${SSH_CONNECTION%% *}
获取客户端的 IP 地址。要获取 DNS 名称,请使用类似
host
或 的内容dig -x
:host ${SSH_CONNECTION%% *}
然后尝试命令host ${SSH_CONNECTION%% *}
。
另一个答案指出,SSH_CONNECTION
在启动子进程(例如通过调用)时会丢失su
。
帖子中的其他答案可能也有用。