1. Обзор
SSH – это сетевой протокол, позволяющий нам подключаться к удаленным компьютерам.
Иногда при управлении серверами Linux нам нужно посмотреть, кто подключился по SSH.
В этом руководстве мы рассмотрим, как вывести список активных сессий SSH.
Мы рассмотрим несколько возможных методов и выявим их плюсы и минусы.
2. Команда who
Чтобы просмотреть список вошедших в систему пользователей, давайте начнем с команды who:
В первом столбце вывода мы видим список пользователей, вошедших в систему в данный момент.
Во втором столбце отображается способ подключения пользователей.
В этом примере user2 и user3 подключены с помощью SSH, а пользователь1 подключен напрямую к серверу.
Сессии SSH будут проходить на псевдотерминале slave (pts). Но имейте в виду, что не все соединения pts обязательно являются SSH-соединениями. Например, команда screen также создаст псевдотерминал slave.
Кроме того, команда who не покажет SFTP-соединения, поскольку они не являются сеансами входа в оболочку.
3. Команда w
Аналогично команде who, мы можем использовать команду w.
Помимо того, что она показывает, кто вошел в систему, она также отображает, что делают пользователи:
Имейте в виду, что команда w имеет те же недостатки, что и команда who.
Во-первых, не все вошедшие в систему пользователи обязательно подключены через SSH.
Чтобы определить это, нужно просмотреть столбец TTY.
Ранее мы установили, что сеансы SSH будут проходить на псевдотерминале slave (pts).
Здесь также нужно учитывать, что не все сеансы pts являются SSH-соединениями.
В большинстве случаев команды w и who являются самыми быстрыми методами получения краткого обзора SSH-сессий.
Как правило, через SSH подключаются вошедшие в систему пользователи.
4. Команда last
Помимо команд who и w, команда last является еще одним способом поиска вошедших в систему пользователей.
Она выводит список последних вошедших в систему пользователей.
Поскольку нас интересуют только те пользователи, которые вошли в систему в данный момент, давайте воспользуемся командой grep для фильтрации вывода last:
Последняя команда не отображает SSH-соединения в явном виде.
Вместо этого она показывает вошедших в систему пользователей.
Мы должны определить, как подключен пользователь, посмотрев на второй столбец вывода.
Сессии SSH будут проходить на псевдотерминале slave (pts).
Но мы также должны учитывать, что не все соединения pts обязательно являются SSH-соединениями.
5. Команда netstat
До сих пор мы рассматривали несколько методов, которые отображают вошедших в систему пользователей.
Сессии SSH также можно найти, просмотрев сетевые подключения.
Для этого давайте воспользуемся командой netstat:
netstat отобразит больше информации, чем нам нужно.
Поэтому, чтобы сосредоточиться на установленных SSH-соединениях, давайте воспользуемся grep для фильтрации результатов.
Из вывода видно, что user1 и user2 подключены по SSH.
В сценариях, где использование команд, перечисляющих вошедших в систему пользователей, недостаточно, netstat даст нам более точное представление об активных SSH-сессиях.
6. Команда ss
Еще одной полезной утилитой для поиска SSH-соединений является команда ss.
Это инструмент, который используется для исследования сокетов.
Давайте найдем активные SSH-соединения, используя вывод ss для ssh:
При использовании ss следует учитывать, что мы не видим имен пользователей за соединениями, как это происходит при использовании netstat.
7. Команда ps
Активные SSH-сессии также можно найти, просмотрев запущенные процессы с помощью команды ps.
Давайте воспользуемся командой ps и выведем в grep ее вывод для sshd:
Первая строка – это главный сервер, который прослушивает новые SSH-соединения.
Ниже мы видим дочерние процессы, которые обслуживают по одному SSH-соединению.
Посмотрев на них, мы можем увидеть, что user1 и user2 подключены по SSH.
Когда список зарегистрированных пользователей недостаточен, ps может дать нам более точный обзор активных SSH-сессий.
8. Логи демона SSH
Файлы логов – это еще один источник информации, связанной с SSH.
Расположение файлов журналов зависит от используемого дистрибутива Linux.
Например, в Ubuntu журналы, связанные с SSH, находятся в /var/log/auth.log.
Давайте изучим журналы и посмотрим, что происходит, когда user1 подключался по SSH:
Aug 30 08:43:36 my-ssh-server sshd[16469]: pam_unix(sshd:session): session opened for user user1 by (uid=1)
Для user1 создается новая сессия.
Если пользователь1 выйдет из системы, сессия будет закрыта:
Aug 30 08:49:02 my-ssh-server sshd[16469]: pam_unix(sshd:session): session closed for user user1
Логи – отличный источник исторической информации.
Но они не очень удобны для быстрого поиска активных в данный момент сеансов SSH.
9. Заключение
В этом руководстве мы рассмотрели, как составить список подключенных сессий SSH.
Мы рассмотрели несколько методов, которые можно использовать для их поиска.
Кроме того, мы рассмотрели их преимущества и недостатки.
см. также:
- 🐧 Как назначить IP-адрес удаленным Linux-системам через SSH
- 🔐 Как получить открытый ключ из закрытого ключа OpenSSH
- 🐳 Настройка Docker контейнера Ubuntu с доступом по SSH
- 🔐 autossh: Запуск, мониторинг и перезапуск SSH-соединений
- 🖧 Команда Linux для выхода из SSH-соединения
- 🦊 SSH или HTTPS для Git: что из них использовать?