私は 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
。
投稿内の他の回答も役立つかもしれません。