--- title: ss — 소켓·포트 확인 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: LISTEN 중인 포트와 연결 상태를 보여주는 netstat 대체 명령어. 포트 충돌 진단에 필수. tags: 프로그램, 네트워크 및 방화벽, ss --- **💬 "ss 명령어"** ss는 **열린 포트와 연결 상태**를 빠르게 보여줍니다. netstat을 대체합니다. 서비스가 포트를 잡고 있는지, 누가 잡고 있는지 확인할 때 씁니다. - **개념**: TCP/UDP 소켓의 상태와 주소를 조회합니다. - **LISTEN**: 연결을 기다리는 서버 소켓입니다. - **로컬 주소**: 0.0.0.0:80은 모든 인터페이스, 127.0.0.1:80은 로컬만입니다. - **프로세스**: -p로 포트를 잡은 프로세스를 표시합니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -l | LISTEN 소켓만 표시합니다 | | -t / -u | TCP / UDP만 표시합니다 | | -n | 이름 해석 없이 숫자로 표시합니다(빠름) | | -p | 소켓을 사용하는 프로세스를 표시합니다 | ## 필수 명령어 조합 3가지 - `ss -lntp` — TCP LISTEN 포트와 프로세스 확인 - `ss -lntp | grep ':80'` — 80 포트를 잡은 프로세스 확인 - `ss -s` — 소켓 상태 요약 통계 **💬 "로그를 뒤질 때 같이 쓰면 좋은 활용법 알려줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · LISTEN 확인 서비스가 기대한 포트에 열려 있는지 봅니다. ``` ss -lntp ``` ### 2단계 · 특정 포트 확인 충돌 여부를 봅니다. ``` ss -lntp | grep -E ':(80|443|8080)\b' ``` ### 3단계 · 연결 상태 확인 TIME_WAIT 등 상태 분포를 봅니다. ``` ss -s ``` ## 실무에서는 이렇게 씁니다 ### 1. 포트 충돌 **상황** — 새 서비스가 8080 바인딩에 실패합니다. ``` ss -lntp | grep ':8080' ``` **결과** — 이미 다른 프로세스가 잡고 있으면 PID와 이름이 표시됩니다. **포인트** — conflict 프로세스를 확인해 중지하거나 포트를 바꿉니다. ### 2. 외부 접속 차단 진단 **상황** — 방화벽은 열었는데 접속이 안 됩니다. ``` ss -lntp | grep ':443' ``` **결과** — 127.0.0.1:443으로만 LISTEN 중이면 외부에서 접속할 수 없습니다. **포인트** — 바인드 주소(0.0.0.0 vs 127.0.0.1)를 꼭 확인합니다. ## 주의할 점 - -p는 다른 사용자 소켓 정보에 권한이 필요해 sudo가 필요할 수 있습니다. - 이름 해석(-n 미사용)은 DNS 지연을 유발할 수 있어 -n을 권장합니다. - LISTEN 여부만 봐서는 방화벽 통과를 보장하지 않습니다. ## 실제 실행 화면 LISTEN 중인 포트와 프로세스를 확인한 결과입니다. ![ss 명령어 실행 결과: LISTEN 포트와 프로세스](https://games.cursorai.co.kr/assets/ss-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/network/ss.html