如何查找连接到 ssh 的计算机名称

如何查找连接到 ssh 的计算机名称

我有一台 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

帖子中的其他答案可能也有用。

相关内容