기술 가이드

Linux에서 활성 SSH 연결 확인하는 방법

5 min read 리눅스 시스템 업데이트됨 10 Oct 2025
Linux에서 활성 SSH 연결 확인하는 7가지 방법
Linux에서 활성 SSH 연결 확인하는 7가지 방법

요약

서버에서 누가 SSH로 접속해 있는지 빠르게 확인하려면 여러 표준 유틸리티를 사용할 수 있습니다. 이 문서에서는 who, w, ps, netstat, ss, last 등 여러 방법의 사용법, 장단점, 운영자용 체크리스트와 보안 권장사항을 정리합니다.

SSH 연결을 보여주는 리눅스 터미널 화면

만약 당신이 리눅스 시스템 관리자이고 서버 관리를 담당한다면, 활성 SSH 연결 수와 접속 출처를 알아야 할 때가 자주 있습니다. 리눅스에는 서버의 활성 SSH 연결을 찾을 수 있는 여러 명령과 도구가 있습니다.

이 튜토리얼에서는 리눅스에서 다양한 방법으로 활성 SSH 연결을 찾는 방법을 설명합니다.

전제 조건

  • 리눅스 운영체제가 실행 중인 서버
  • 해당 서버에 대한 루트(root) 또는 동등한 권한

who 명령으로 활성 SSH 연결 찾기

who는 현재 서버에 로그인한 사용자의 목록을 출력하는 기본 명령입니다. 터미널에서 다음을 실행하세요:

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)

이 출력에서 두 개의 활성 SSH 연결이 있고, 각각 클라이언트 IP는 27.61.161.61과 45.58.38.21임을 알 수 있습니다.

중요: who는 로그인 세션 정보만 보여주므로 짧게 접속했다 끊긴 세션이나 비표준 포트를 사용하는 일부 연결은 보이지 않을 수 있습니다.

w 명령으로 활성 SSH 연결 찾기

w는 who보다 더 많은 정보를 제공하는 도구로, 로그인한 사용자들의 현재 활동과 실행 중인 프로세스 정보를 보여줍니다. 실행:

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는 idle 시간, 접속한 호스트, 로그인 시간, 시스템 부하와 각 세션에서 실행 중인 프로세스를 보여주므로 세션 활동을 빠르게 파악할 때 유용합니다.

ps 명령으로 활성 SSH 연결 찾기

ps 명령은 활성 SSH 세션 관련 프로세스를 보여주며, 각 연결의 PID(프로세스 ID)를 확인할 수 있습니다. 다음을 실행하세요:

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

ps를 사용하면 연결과 연관된 프로세스를 직접 확인하고 필요 시 특정 PID를 종료하거나 조사할 수 있습니다.

netstat 명령으로 활성 SSH 연결 찾기

netstat은 원격 호스트에서 서버로 들어오는 활성(ESTABLISHED) SSH 연결을 보여줄 수 있습니다. 실행:

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 

netstat은 소스/목적지 IP와 포트, 상태, 프로세스 ID를 함께 보여주므로 네트워크 관점의 조사를 할 때 유용합니다. 참고: 최신 배포판에서는 netstat이 비활성화되어 있을 수 있으며 ss를 권장합니다.

last 명령으로 활성 SSH 연결 찾기

last는 /var/log/wtmp 파일에 기록된 로그인/로그아웃 기록을 표시합니다. 현재 “still logged in” 상태인 세션을 필터링하면 활성 연결을 찾을 수 있습니다. 실행:

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는 로그인 기록을 기반으로 하므로 과거 추적과 현재 상태를 함께 확인할 때 유용합니다.

ss 명령으로 활성 SSH 연결 찾기

ss는 netstat의 현대적 대안으로 더 많은 정보를 빠르게 제공합니다. grep과 함께 사용하여 ssh 관련 연결만 필터링할 수 있습니다. 실행:

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는 대규모 연결을 빠르게 검사할 때 적합하며 netstat보다 기본적으로 설치되어 있는 경우가 많습니다.

빠른 요약(체크리스트 및 치트시트)

  • 누가 로그인했나 빠르게 확인: who
  • 활동/프로세스 확인: w
  • SSH 관련 프로세스 PID 확인: ps (예: ps auxwww | grep sshd:)
  • 네트워크 레벨 연결 확인: ss 또는 netstat
  • 로그인 기록 확인: last

치트시트(자주 쓰는 명령):

목적명령 예시
현재 로그인 사용자who
활동/프로세스 확인w

| sshd 관련 프로세스 | ps auxwww | grep sshd: | grep -v grep | | 네트워크 연결(빠름) | ss | grep -i ssh | | 네트워크 연결(netstat 방식) | netstat -tnpa | grep ‘ESTABLISHED.*sshd’ | | 로그인 기록에서 활성 세션 | last -a | grep -i still |

운영자용 점검 체크리스트

  • IP가 낯선가? 방화벽/로그를 확인하고 필요 시 차단
  • 동일한 계정에서 다수의 동시 접속이 있는가? 정책 검토
  • 의심스러운 프로세스(PID)가 연결과 연관되어 있는가? ps로 PID 확인 후 lsof/journalctl 조사
  • 인증 실패 기록은? /var/log/auth.log 또는 journalctl -u sshd 확인
  • SSH 버전과 설정(포트, PermitRootLogin, PasswordAuthentication)을 점검

문제 발생 시: 언제 이 방법들이 실패하는가

  • who/w는 로컬 로그인 기록을 기반으로 하므로 어떤 세션은 보이지 않을 수 있음(예: 비표준 세션 관리).
  • netstat가 설치되어 있지 않거나 권한 부족으로 프로세스 식별을 못 할 수 있음.
  • ps로는 이미 종료된 세션 또는 스레드 정보를 놓칠 수 있음.
  • 로그 파일이 순환(logrotate)되어 오래된 정보가 사라졌을 수 있음.

해결 힌트: 여러 툴을 조합해서 교차검증(예: ss + ps + journalctl).

대안 및 확장 방법

  • auditd 기반 감사: SSH 인증/세션 이벤트를 심층적으로 기록할 수 있음(규정 준수 필요 시 권장).
  • journalctl -u sshd: systemd 기반 시스템에서 sshd 관련 로그 확인.
  • lsof -i @HOST: 특정 포트/소켓을 연 프로세스 확인.
  • 중앙 로그 수집(예: ELK, Graylog)으로 장기 추적 및 경보 설정.

보안 및 감사 권장사항

  • root 직접 로그인을 비활성화하고, 공개키 인증(Public Key)만 허용하는 것을 고려하세요.
  • 비밀번호 인증은 가능하면 비활성화하고, Fail2ban 같은 도구로 반복 로그인 시도를 차단하세요.
  • SSH 접속 기록은 중앙 로그 서버로 전송하여 장기 보존 및 상관분석을 수행하세요.
  • 정기적으로 허가된 공개키 목록을 검토하고 불필요한 계정을 삭제하세요.

간단 용어집

  • SSH: 암호화된 원격 셸 프로토콜
  • PID: 프로세스 ID
  • ESTABLISHED: TCP 연결이 성립된 상태
  • wtmp: 로그인/로그아웃 기록을 저장하는 바이너리 파일(/var/log/wtmp)

운영자용 간단 SOP: 의심스러운 SSH 세션 조사 흐름

  1. ss 또는 netstat로 현재 연결 확인(원격 IP, 포트, 프로세스 정보 수집)
  2. ps로 연관 PID 확인
  3. lsof, journalctl, /var/log/auth.log로 해당 PID/시간대 활동 확인
  4. 필요 시 해당 세션 강제 종료(예: kill ) 및 방화벽 차단
  5. 사건 기록 및 중앙 로그에 사건 알림 등록
flowchart TD
  A[의심스러운 접속 보고] --> B{접속 확인}
  B -->|활성| C[PID 및 프로세스 확인]
  B -->|미활성| D[로그 기록 수집]
  C --> E{악성 여부}
  E -->|예| F[세션 종료 및 IP 차단]
  E -->|아니오| G[모니터링 계속]
  D --> G

결론

이 가이드에서는 who, w, ps, netstat, ss, last 등의 도구로 리눅스 서버의 활성 SSH 연결을 확인하는 여러 방법을 다뤘습니다. 운영 환경에서는 단일 도구에 의존하지 말고 네트워크/프로세스/로그 관점에서 복수의 도구로 교차검증하는 것이 안전합니다.

중요: 로그를 중앙에 보관하고, 강력한 인증 정책(공개키, 비밀번호 비활성화)과 자동 차단 도구를 함께 사용하면 SSH 관련 사고를 크게 줄일 수 있습니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

넷플릭스 오프라인 다운로드 완벽 가이드
스트리밍 가이드

넷플릭스 오프라인 다운로드 완벽 가이드

CentOS 5.3: /dev/sda로 RAID1 추가 및 GRUB 설정
시스템 관리

CentOS 5.3: /dev/sda로 RAID1 추가 및 GRUB 설정

YouTube 싫어요 수 확인 방법 — 브라우저와 Android에서 보기
유튜브 가이드

YouTube 싫어요 수 확인 방법 — 브라우저와 Android에서 보기

Feed Rinse로 RSS 피드 필터링하는 방법
도구 가이드

Feed Rinse로 RSS 피드 필터링하는 방법

스마트폰으로 차량 해킹 실험 분석
자동차 보안

스마트폰으로 차량 해킹 실험 분석

Mac 로그인 화면 배경화면 쉽게 변경하는 방법
Mac 가이드

Mac 로그인 화면 배경화면 쉽게 변경하는 방법