Как узнать имя компьютера, который подключился по ssh

Как узнать имя компьютера, который подключился по ssh

У меня есть сервер ubuntu20 и скрипт bash, расположенный в /etc/profile.d, который отправляет сообщение в telegram, если кто-то подключается по ssh. Цель этого скрипта — выяснить, есть ли взлом, и предпринять действия.

Я хочу узнать имя компьютера, который подключился к 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.

Другие ответы в посте также могут быть полезны.

Связанный контент