Гид по технологиям

Как найти активные SSH‑подключения на Linux‑сервере

4 min read DevOps Обновлено 10 Oct 2025
Найти активные SSH‑подключения на Linux
Найти активные SSH‑подключения на Linux

С помощью простых команд — who, w, ps, netstat, ss и last — вы быстро увидите, кто сейчас подключён по SSH, откуда и какие процессы запущены. Для оперативного контроля используйте ss/netstat, для истории — last, для деталей процесса — ps.

Важно: утилиты читают разные источники (utmp, proc, сокеты). Если вы не видите сессию в одной команде, проверьте другие команды и системные логи.

Предварительные требования

  • Сервер под управлением Linux.
  • Доступ root или права, позволяющие читать системные журналы и /var/run/utmp.

Основная идея

Определить активные SSH‑подключения можно несколькими способами: утилиты чтения записей входа (who, w, last), просмотр процессов sshd (ps), проверка сетевых сокетов (ss, netstat). Каждая команда даёт свой срез информации: идентификатор пользователя, IP клиента, PID процесса, состояние сокета и история входов.

Использование who

who показывает список пользователей, которые в данный момент вошли в систему (источник: /var/run/utmp).

Откройте терминал и выполните:

who

Пример вывода:

root     pts/0        2020-05-01 02:37 (27.61.161.61)
root     pts/1        2020-05-01 02:39 (45.58.38.21)

Вывод показывает активные сессии и IP‑адреса клиентов.

Использование w

w даёт более подробную информацию: время входа, простой, какие команды запущены в сессии и среднюю загрузку.

w

Пример вывода:

 02:40:07 up 1 day, 18:35,  2 users,  load average: 0.02, 0.02, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    27.61.161.61     02:37    1.00s  0.04s  0.01s ssh [email protected]
root     pts/1    45.58.38.21      02:39    1.00s  0.02s  0.00s w

w удобен для мониторинга и быстрого определения, какие процессы выполняются в сессиях.

Использование ps для просмотра sshd процессов

ps покажет процессы sshd с PID и аргументами, что полезно для отладки и привязки сессии к процессу.

ps auxwww | grep sshd: | grep -v grep

Пример вывода:

root         609  0.0  0.1  12160  7268 ?        Ss   Apr29   0:01 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root       35532  0.0  0.2  13864  8796 ?        Ss   02:37   0:00 sshd: root@pts/0
root       35669  0.0  0.2  13860  8916 ?        Ss   02:38   0:00 sshd: root@pts/1

PID помогает корректно завершать зависшие сессии или сопоставлять записи в журнале.

Использование netstat для проверки установленных TCP‑соединений

netstat (если установлен) показывает сетевые соединения и связанные с ними процессы.

netstat -tnpa | grep 'ESTABLISHED.*sshd'

Пример вывода:

tcp        0     88 45.58.38.21:22          27.61.161.61:8363       ESTABLISHED 35532/sshd: root@pt 
tcp        0      0 45.58.38.21:22          45.58.38.21:51166       ESTABLISHED 35669/sshd: root@pt 

Этот вариант полезен, когда нужно увидеть активные TCP‑сессии и номера портов клиентов.

Использование ss для современного просмотра сокетов

ss — современная альтернатива netstat. Быстрее и даёт расширенный вывод.

ss | grep -i ssh

Пример вывода:

tcp   ESTAB  0      0                      45.58.38.21:51166        45.58.38.21:ssh                                                                             
tcp   ESTAB  0      56                     45.58.38.21:ssh         27.61.161.61:8363                                                                            
tcp   ESTAB  0      0                      45.58.38.21:ssh          45.58.38.21:51166                                                                           

ss хорошо годится для быстрого анализа подключений и фильтрации по состоянию сокета.

Использование last для истории входов и текущих сессий

last читает /var/log/wtmp и показывает историю входов и выхода. Параметр grep по слову “still” фильтрует активные сессии.

last -a | grep -i still

Пример вывода:

root     pts/1        Fri May  1 02:39   still logged in    45.58.38.21
root     pts/0        Fri May  1 02:37   still logged in    27.61.161.61
reboot   system boot  Wed Apr 29 08:04   still running      5.4.0-26-generic

last полезен для расследования активности пользователей и построения истории входов.

Короткая шпаргалка: команды и цель

  • who — кто сейчас вошёл (utmp).
  • w — кто вошёл и что делает (процессы в сессии).
  • ps — процессы sshd и PID.
  • ss/netstat — сетевые подключения и состояния сокетов.
  • last — история входов и текущие сессии из wtmp.

Когда методы дают разные результаты

  • utmp и wtmp отражают логические сессии; они могут не обновиться, если процесс завершился некорректно.
  • ps показывает процессы, даже если запись в utmp отсутствует.
  • ss/netstat показывает уровни TCP‑сокетов; если SSH‑соединение перешло в состояние CLOSE_WAIT, оно всё ещё может появляться в списке.

Если вы не видите сессию в одной команде, проверьте другие источники и системные журналы (/var/log/auth.log или journalctl).

Альтернативные подходы и инструменты

  • auditd: записывает события входа/выхода на уровне аудита.
  • journalctl -u sshd: просмотр логов systemd для sshd.
  • faill2ban: автоматически блокирует подозрительные попытки входа.
  • Использование централизованного логирования (ELK, Graylog) для корреляции входов по всем серверам.

Быстрая проверка (one‑liner) для активных SSH клиентов с PID

ss -tnp | grep sshd | awk '{print $5 " -> " $6}'

Или более надёжно, чтобы получить IP и PID:

ss -tnp | grep sshd | sed -E 's/ +/ /g'

(Команды можно адаптировать под нужный формат вывода и окружение.)

Чек‑лист по ролям

  • Администратор: проверьте ps, ss, w, и завершите зависший PID при необходимости.
  • Инженер безопасности: проверьте журналы (/var/log/auth.log), установите fail2ban и MFA для SSH.
  • Операции/DevOps: настройте централизованную агрегацию логов и оповещения по аномальной активности.

Жёсткая конфигурация безопасности SSH

  • Отключите прямой root‑доступ: PermitRootLogin no.
  • Включите аутентификацию по ключу и отключите парольную аутентификацию: PasswordAuthentication no.
  • Используйте ограничение по IP (AllowUsers/AllowGroups или firewall).
  • Настройте мониторинг и алёрты по числу одновременных сессий.

Модель принятия решения: какой инструмент применять

flowchart TD
  A[Нужно быстро увидеть, кто онлайн?] -->|Да| B[who или w]
  A -->|Нужно PID и детали процесса| C[ps]
  A -->|Нужно сетевые сокеты| D[ss/netstat]
  A -->|Нужно история входов| E[last]
  B --> F[Команда выполнена]
  C --> F
  D --> F
  E --> F

Критерии приёмки

  • Вы видите список активных сессий с IP и временем входа.
  • Доступны PIDы sshd, если требуется завершение сессии.
  • Совпадают результаты ss/netstat и ps при проверке конкретной сессии.

Короткий глоссарий (1‑строчно)

  • utmp: файл /var/run/utmp — текущее состояние входов.
  • wtmp: файл /var/log/wtmp — история входов/выходов.
  • sshd: демон OpenSSH, обслуживающий SSH‑подключения.
  • ss/netstat: инструменты для просмотра сетевых сокетов.

Тестовые случаи / приёмка

  • Создать SSH‑сессию с клиента и проверить, что who, w и ss показывают эту сессию.
  • Принудительно завершить sshd‑процесс и проверить, что записи в utmp/wtmp обновились корректно.
  • Смоделировать многопользовательскую нагрузку и убедиться, что команды показывают ожидаемое число сессий.

Итог

Вы узнали несколько надёжных способов найти активные SSH‑подключения на Linux: who, w, ps, ss/netstat и last. Для оперативного мониторинга используйте ss или netstat, для отладки — ps, а для истории — last. Всегда сверяйте несколько источников и проверяйте журналы, если поведение кажется аномальным.

Примечание: для продакшн‑окружений рекомендуется централизовать логи и настроить оповещения о необычных входах.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

GmusicFS: монтирование Google Play Music на Android
Android.

GmusicFS: монтирование Google Play Music на Android

Локальный yum‑репозиторий для Fedora 8
Linux

Локальный yum‑репозиторий для Fedora 8

Как включить моно-аудио в Windows
Аудио

Как включить моно-аудио в Windows

Fallout 4 в стиле Borderlands — твик для ПК
Моды

Fallout 4 в стиле Borderlands — твик для ПК

Как исправить разряд батареи на iOS 16
Гид по iPhone

Как исправить разряд батареи на iOS 16

Ошибка: Windows установлен в неподдерживаемом каталоге
Windows

Ошибка: Windows установлен в неподдерживаемом каталоге