SSHに接続したコンピュータ名を見つけるにはどうすればいいですか

SSHに接続したコンピュータ名を見つけるにはどうすればいいですか

私は ubuntu20 サーバーを所有しており、/etc/profile.d にある bash スクリプトは、誰かが ssh を使用して接続すると Telegram にメッセージを送信します。このスクリプトの目的は、ハッキングがあるかどうかを調べて対処することです。

SSH に接続したコンピューターの名前を Telegram メッセージに含めて、接続者が自分のチームのメンバーかハッカーかを確認したいと考えています。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

投稿内の他の回答も役立つかもしれません。

関連情報