如何找到連接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

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

相關內容