🔐 Как перечислить все подключенные сессии SSH |

🔐 Как перечислить все подключенные сессии SSH

Мануал

1. Обзор

SSH – это сетевой протокол, позволяющий нам подключаться к удаленным компьютерам.

Иногда при управлении серверами Linux нам нужно посмотреть, кто подключился по SSH.

В этом руководстве мы рассмотрим, как вывести список активных сессий SSH.

Мы рассмотрим несколько возможных методов и выявим их плюсы и минусы.

2. Команда who

Чтобы просмотреть список вошедших в систему пользователей, давайте начнем с команды who:

who
user1 tty1 2020-08-29 14:59
user2 pts/0 2020-08-29 14:57 (203.0.113.24)
user3 pts/1 2020-08-29 15:02 (203.0.113.13)

В первом столбце вывода мы видим список пользователей, вошедших в систему в данный момент.

Во втором столбце отображается способ подключения пользователей.

В этом примере user2 и user3 подключены с помощью SSH, а пользователь1 подключен напрямую к серверу.

Сессии SSH будут проходить на псевдотерминале slave (pts). Но имейте в виду, что не все соединения pts обязательно являются SSH-соединениями. Например, команда screen также создаст псевдотерминал slave.

Кроме того, команда who не покажет SFTP-соединения, поскольку они не являются сеансами входа в оболочку.

3. Команда w

Аналогично команде who, мы можем использовать команду w.

Помимо того, что она показывает, кто вошел в систему, она также отображает, что делают пользователи:

w
16:21:34 up 1:29, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 tty1 -- 14:59 16.00s 0.05s 0.01s -bash
user2 pts/0 203.0.113.24 14:57 5.00s 0.04s 0.02s vim
user3 pts/1 203.0.113.13 15:02 1.00s 0.02s 0.00s w

Имейте в виду, что команда w имеет те же недостатки, что и команда who.

Во-первых, не все вошедшие в систему пользователи обязательно подключены через SSH.

Чтобы определить это, нужно просмотреть столбец TTY.

Ранее мы установили, что сеансы SSH будут проходить на псевдотерминале slave (pts).

Здесь также нужно учитывать, что не все сеансы pts являются SSH-соединениями.

В большинстве случаев команды w и who являются самыми быстрыми методами получения краткого обзора SSH-сессий.

Как правило, через SSH подключаются вошедшие в систему пользователи.

4. Команда last

Помимо команд who и w, команда last является еще одним способом поиска вошедших в систему пользователей.

Она выводит список последних вошедших в систему пользователей.

Поскольку нас интересуют только те пользователи, которые вошли в систему в данный момент, давайте воспользуемся командой grep для фильтрации вывода last:

  $ last | grep ‘still logged in’
root pts/1 203.0.113.13 Sat Aug 29 15:02 still logged in
root tty1 Sat Aug 29 14:59 still logged in
root pts/0 203.0.113.24 Sat Aug 29 14:57 still logged in

Последняя команда не отображает SSH-соединения в явном виде.

Вместо этого она показывает вошедших в систему пользователей.

Мы должны определить, как подключен пользователь, посмотрев на второй столбец вывода.

Сессии SSH будут проходить на псевдотерминале slave (pts).

Но мы также должны учитывать, что не все соединения pts обязательно являются SSH-соединениями.

5. Команда netstat

До сих пор мы рассматривали несколько методов, которые отображают вошедших в систему пользователей.

Сессии SSH также можно найти, просмотрев сетевые подключения.

Для этого давайте воспользуемся командой netstat:

netstat -atnp | grep ‘ESTABLISHED.*sshd’
tcp 0 0 198.51.100.14:22 203.0.113.13:49570 ESTABLISHED 1674/sshd: user1@pts
tcp 0 36 198.51.100.14:22 203.0.113.24:57586 ESTABLISHED 1894/sshd: user2@pts

netstat отобразит больше информации, чем нам нужно.

Поэтому, чтобы сосредоточиться на установленных SSH-соединениях, давайте воспользуемся grep для фильтрации результатов.

Из вывода видно, что user1 и user2 подключены по SSH.

В сценариях, где использование команд, перечисляющих вошедших в систему пользователей, недостаточно, netstat даст нам более точное представление об активных SSH-сессиях.

6. Команда ss

Еще одной полезной утилитой для поиска SSH-соединений является команда ss.

Это инструмент, который используется для исследования сокетов.

Давайте найдем активные SSH-соединения, используя вывод ss для ssh:

ss | grep ssh
tcp ESTAB 0 0 198.51.100.14:ssh 203.0.113.13:49570
tcp ESTAB 0 36 198.51.100.14:ssh 203.0.113.24:57586

При использовании ss следует учитывать, что мы не видим имен пользователей за соединениями, как это происходит при использовании netstat.

7. Команда ps

Активные SSH-сессии также можно найти, просмотрев запущенные процессы с помощью команды ps.

Давайте воспользуемся командой ps и выведем в grep ее вывод для sshd:

  ps axfj | grep sshd
1 776 776 776 ? -1 Ss 0 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
776 15457 15457 15457 ? -1 Ss 0 0:00 \_ sshd: user1@pts/0
15558 15681 15680 15558 pts/0 15680 S+ 0 0:00 | \_ grep --color=auto sshd
776 15596 15596 15596 ? -1 Ss 0 0:00 \_ sshd: user2@pts/1

Первая строка – это главный сервер, который прослушивает новые 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.

Мы рассмотрели несколько методов, которые можно использовать для их поиска.

Кроме того, мы рассмотрели их преимущества и недостатки.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий