Linux ssコマンドのオプション完全ガイド|基本から実践まで徹底解説!【応用編】

最終更新日 2025年1月26日

ssコマンドとは?基本概要と用途

ss コマンド(Socket Statistics)は、Linuxでネットワーク接続の状況を確認するためのコマンドです。
サーバーがどのポートで待機しているかや、どのクライアントと通信しているかを素早く把握できます。

従来は netstat コマンドが使われていましたが、ssより高速で、詳細なソケット情報を取得できるため、現在では netstat の代替として一般的に使用されています。

SSコマンドの概要については下記で紹介しているので興味があったら見てみてください!

ssコマンドのオプションを組み合わせて使う

ss コマンドは、オプションを組み合わせることでより詳細な情報を取得できます。
ここでは、よく使われる組み合わせ例と、高度なフィルタリングの活用方法を紹介します。

  1. ss -tulnp(すべてのリスニングソケット+プロセス情報を表示)
  2. ss -tan state established(確立済みのTCP接続のみを表示)
  3. ss -tunlp | grep :80(ポート80を使用しているプロセスを特定)
  4. ss -tan dst 192.168.1.100(特定のIPアドレスとの接続のみ表示)
  5. ss -tan sport = 22(特定の送信元ポートを利用している接続を表示)

各オプションを単体で使用した場合などの基礎的な説明は下記の記事で紹介しているのでよかったら見てみてください!

ss -tulnp(すべてのリスニングソケット+プロセス情報を表示)

サーバーが現在待ち受けている TCP/UDPのポート を確認し、それぞれ どのプロセスが使用しているか を調べます。

実行コマンド

ss -tulnp

実際の出力結果

Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0       128     0.0.0.0:22         0.0.0.0:*          users:(("sshd",pid=1234,fd=3))
tcp    LISTEN  0       128     0.0.0.0:80         0.0.0.0:*          users:(("nginx",pid=5678,fd=6))
udp    UNCONN  0       0       127.0.0.1:123      0.0.0.0:*          users:(("ntpd",pid=9012,fd=4))

実行コマンドオプションの解説

  • -tTCPソケットを表示
  • -uUDPソケットを表示
  • -lLISTEN状態のソケットのみ表示(待ち受け中のポート)
  • -nアドレスを数値で表示(DNS解決を省略して高速化)
  • -pプロセス情報を表示(どのプログラムが使用しているか特定)

上記出力結果の解説

2行目の内容(SSHサーバーの待機状態)

  • tcp(ネットワークプロトコル) → TCP接続を使用
  • LISTEN(状態) → ポート22(SSH)が接続を待機している状態
  • Recv-Q: 0(受信キュー) → 受信待ちのデータはなし
  • Send-Q: 128(送信キュー) → 最大128個の接続を待機できる設定
  • Local Address:Port0.0.0.0:22 → どのIPアドレスからのSSH接続も受け付ける状態
  • Peer Address:Port0.0.0.0:* → まだ特定のクライアントとの接続は確立されていない
  • Process(プロセス情報)sshd(SSHサーバー)がポート22を使用中
    • pid=1234 → SSHデーモン(sshd)のプロセスID(PID)が 1234
    • fd=3 → このプロセスが使用しているファイルディスクリプタ(ソケットの識別番号)が 3

この行の情報から、SSHサーバー(sshd)が動作中で、外部からのSSH接続を待機していることが分かります。

3行目の内容(Webサーバーの待機状態)

  • tcp(ネットワークプロトコル) → TCP接続を使用
  • LISTEN(状態) → ポート80(HTTP)が接続を待機している状態
  • Recv-Q: 0(受信キュー) → 受信待ちのデータはなし
  • Send-Q: 128(送信キュー) → 最大128個の接続を待機できる設定
  • Local Address:Port0.0.0.0:80 → どのIPアドレスからのHTTP接続も受け付ける状態
  • Peer Address:Port0.0.0.0:* → まだ特定のクライアントとの接続は確立されていない
  • Process(プロセス情報)nginx(Webサーバー)がポート80を使用中
    • pid=5678nginx のプロセスID(PID)が 5678
    • fd=6nginx がこのポートをリスニングしているソケットの識別番号が 6

この行の情報から、Nginx Webサーバーが動作中で、外部からのHTTPリクエストを待ち受けていることが分かります。

4行目の内容(NTPサーバーの待機状態)

  • udp(ネットワークプロトコル) → UDP接続を使用
  • UNCONN(状態) → 「未接続」の状態(UDPはTCPのように接続を確立しないため通常)
  • Recv-Q: 0(受信キュー) → 受信待ちのデータはなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータはなし
  • Local Address:Port127.0.0.1:123 → サーバーの ローカルホスト(127.0.0.1) 上で ポート123(NTP) が待機している
  • Peer Address:Port0.0.0.0:* → まだ特定のクライアントとの接続は確立されていない
  • Process(プロセス情報)ntpd(NTPサーバー)がポート123を使用中
    • pid=9012ntpd のプロセスID(PID)が 9012
    • fd=4ntpd がこのポートを使用しているソケットの識別番号が 4

この行の情報から、このサーバーはNTPサービスを実行しており、ローカルホスト(127.0.0.1)内でのみ時刻同期を提供していることが分かります。

ss -tulnpコマンドの要点
ss -tulnpコマンドは全てのリスニングソケットと関連するプロセス情報を
一括して表示します。
TCP/UDPソケットの表示
ss -tulnpコマンドは、TCPおよびUDPの全てのリスニングソケットの情報を表示します。これにより、現在システム上で動作している全てのネットワークサービスを一目で把握することができます。
プロセス情報の表示
このコマンドを利用することで、各ソケットが使用しているプロセス情報も併せて表示されます。
数値表記による明確化
また、-nオプションにより、アドレスやポート番号を数値表記で表示することが可能です。この機能により、DNSルックアップを回避し、表示速度を向上させながらも、情報を明瞭に把握することができます。
ss -tulnpコマンドの要点

ss -tan state established(確立済みのTCP接続のみを表示)

現在 確立済み(ESTABLISHED)のTCP接続 を確認するコマンドです。
サーバーへの接続状況を把握し、どのクライアントが通信しているかを確認する際に役立ちます。

実行コマンド

ss -tan state established

実際の出力結果

Netid  State       Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    ESTAB       0       0       192.168.1.10:22     192.168.1.50:50123
tcp    ESTAB       0       0       192.168.1.10:443    203.0.113.100:50234

コマンドオプションの解説

  • -tTCP接続を表示
  • -aすべての接続を表示(デフォルトでは確立済み接続のみ)
  • -nアドレスを数値で表示
  • state established確立済みの接続のみを表示

上記出力結果の解説

2行目の内容(SSH接続が確立済み)

  • tcp(ネットワークプロトコル) → TCP接続を使用
  • ESTAB(状態) → 確立済みの接続で、通信が可能な状態
  • Recv-Q: 0(受信キュー) → 受信待ちのデータなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータなし(スムーズに通信中)
  • Local Address:Port192.168.1.10:22サーバーがポート22(SSH) でクライアントと通信中
  • Peer Address:Port192.168.1.50:50123クライアント 192.168.1.50 がポート 50123 からSSH接続している

この行の情報から、サーバー 192.168.1.10 にクライアント 192.168.1.50 がSSHで接続していることが分かります。
SSHはリモート管理のために使用されるため、192.168.1.50 は管理者のPCなどである可能性が高いです。

3行目の内容(HTTPS接続が確立済み)

  • tcp(ネットワークプロトコル) → TCP接続を使用
  • ESTAB(状態) → 確立済みの接続で、通信が可能な状態
  • Recv-Q: 0(受信キュー) → 受信待ちのデータなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータなし(スムーズに通信中)
  • Local Address:Port192.168.1.10:443サーバーがポート443(HTTPS) でクライアントと通信中
  • Peer Address:Port203.0.113.100:50234クライアント 203.0.113.100 がポート 50234 からHTTPS接続している

この行の情報から、サーバー 192.168.1.10 に外部のクライアント 203.0.113.100 がHTTPSで接続していることが分かります。
このクライアントはWebブラウザを使用して、サーバー上のWebサイトにアクセスしている可能性が高いです。

ss -tan state establishedコマンドの要点
このコマンドは確立済みのTCP接続のみを表示します。
コマンドの実行方法
ss -tan state established コマンドを実行するだけで、現在確立済みの全てのTCP接続を表示することができます。表示された情報を基に通信状況を把握しましょう。
コマンドの出力内容 
コマンドの出力には、ESTAB状態のTCP接続がリストアップされます。各行にはプロトコル、状態、ローカルアドレス、ピアアドレスなどが記載されており、接続の詳細が明確になります。
ss -tan state establishedコマンドの要点

ss -tunlp | grep :80(ポート80を使用しているプロセスを特定)

特定のポート(ここでは ポート80)を使用しているプロセスを特定する方法です。
Webサーバー(ApacheやNginx)が適切に稼働しているか確認する際に活用できます。

実行コマンド

ss -tunlp | grep :80

実際の出力結果

tcp   LISTEN  0  128  0.0.0.0:80  0.0.0.0:*  users:(("nginx",pid=5678,fd=6))

実行コマンドの解説

  • ss -tunlpすべてのLISTENソケット+プロセス情報を取得
  • grep :80ポート80を使用しているエントリのみを表示

上記出力結果の解説

この ss コマンドの出力結果から、以下のことが分かります。

  • Nginx Webサーバーがポート80(HTTP)で待機中(プロセス nginx、PID 5678
  • どのIPアドレス(0.0.0.0)からの接続も受け入れる状態
  • 現在、クライアントとの接続は確立されていない(まだESTABLISHED ではない)
ss -tunlp | grep :80コマンドの要点
ポート80を使用しているプロセスを確認するコマンドで、Webサーバーの稼働状況が一目でわかります。
コマンドの概要
ss -tunlpは、システム上で動作しているすべてのTCP/UDPリスニングポートとその対応プロセスを確認するコマンドです。grep :80を追加して特定のポートのみを抽出します。
実行例と出力
コマンド「ss -tunlp | grep :80」を実行するだけで、ポート80を使用している全てのプロセス情報が表示されます。特にnginxなどのWebサーバーの確認に非常に有効です。
ss -tunlp | grep :80コマンドの要点

ss -tan dst 192.168.1.100(特定のIPアドレスとの接続のみ表示)

特定のIP(この場合は 192.168.1.100)との通信のみを抽出するコマンドです。
特定のクライアントとの接続数を確認する際に役立ちます。

実行コマンド

ss -tan dst 192.168.1.100

実際の出力結果

Netid  State       Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    ESTAB       0       0       192.168.1.10:22     192.168.1.100:50123
tcp    ESTAB       0       0       192.168.1.10:443    192.168.1.100:50234

実行コマンドの解説

  • dst 192.168.1.100このIPアドレスへの接続のみ表示
  • state established を組み合わせると 確立済みの接続だけを確認可能

上記出力結果の解説

2行目の内容(SSH接続が確立済み)

  • tcp(プロトコル) → TCP接続を使用
  • ESTAB(状態) → 接続が確立されている状態(クライアントとサーバーが正常に通信中)
  • Recv-Q: 0(受信キュー) → サーバー側で受信待ちのデータはなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータはなし(通信がスムーズ)
  • Local Address:Port192.168.1.10:22サーバー(192.168.1.10)がSSH(ポート22) でクライアントと通信中
  • Peer Address:Port192.168.1.100:50123クライアント(192.168.1.100)がポート 50123 からSSH接続している

この行の情報から、サーバー 192.168.1.10 にクライアント 192.168.1.100 がSSHで接続していることが分かります。
SSHはリモート管理のために使用されるため、192.168.1.100 は管理者のPCやリモートサーバーの可能性が高いです。

3行目の内容(HTTPS接続が確立済み)

  • tcp(プロトコル) → TCP接続を使用
  • ESTAB(状態) → 接続が確立されている状態(クライアントとサーバーが正常に通信中)
  • Recv-Q: 0(受信キュー) → サーバー側で受信待ちのデータはなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータはなし(通信がスムーズ)
  • Local Address:Port192.168.1.10:443サーバー(192.168.1.10)がHTTPS(ポート443) でクライアントと通信中
  • Peer Address:Port192.168.1.100:50234クライアント(192.168.1.100)がポート 50234 からHTTPS接続している

この行の情報から、サーバー 192.168.1.10 にクライアント 192.168.1.100 がHTTPSで接続していることが分かります。
このクライアントは、WebブラウザやAPIクライアントを使用して、サーバー上のWebサイトやアプリケーションにアクセスしている可能性が高いです。

出力結果の詳細解説(HTTPS接続)
HTTPS接続の出力結果を正しく理解するため、
各要素が示す情報を説明します。
プロトコルと状態
「tcp ESTAB」は、接続が確立しているTCPプロトコルであることを示しています。HTTPS接続は通常、443ポートを使用します。接続の状態は、"ESTAB(確立済み)" です。
ローカルアドレス
「192.168.1.10:443」は、接続が始まっているローカルホストのIPアドレスとポート番号を示しています。443ポートはHTTPSに使用されます。
リモートアドレス
「192.168.1.100:50234」は、接続しているリモートホストのIPアドレスとポート番号を示しています。このポート番号50234は、一時的に割り当てられた動的ポートです。
出力結果の詳細解説(HTTPS接続)

ss -tan sport = 22(特定の送信元ポートを利用している接続を表示)

特定の送信元ポート(ここでは 22番(SSH))を使用している接続を確認する方法です。
SSHセッションの状況を調査したり、異常なSSH接続を監視する際に有用です。

実行コマンド

ss -tan sport = 22

実際の出力結果

Netid  State       Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    ESTAB       0       0       192.168.1.10:22     192.168.1.50:60123
tcp    ESTAB       0       0       192.168.1.10:22     203.0.113.10:60234

実行コマンドの解説

  • sport = 22送信元ポート22を使用している接続のみを表示
  • SSHのポートフォワーディングや踏み台サーバーを経由した接続の監視にも活用可能

上記出力結果の解説

2行目の内容(SSH接続が確立済み – ローカルネットワークからの接続)

  • tcp(プロトコル) → TCP接続を使用
  • ESTAB(状態) → 接続が確立されている状態(クライアントとサーバーが正常に通信中)
  • Recv-Q: 0(受信キュー) → サーバー側で受信待ちのデータはなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータはなし(通信がスムーズ)
  • Local Address:Port192.168.1.10:22サーバー(192.168.1.10)がSSH(ポート22) でクライアントと通信中
  • Peer Address:Port192.168.1.50:60123クライアント(192.168.1.50)がポート 60123 からSSH接続している

この行の情報から、サーバー 192.168.1.10 にクライアント 192.168.1.50(ローカルネットワーク内のPC)がSSHで接続していることが分かります。
SSHはリモート管理のために使用されるため、192.168.1.50 は管理者のPCやリモートサーバーの可能性が高いです。

3行目の内容(SSH接続が確立済み – 外部IPからの接続)

  • tcp(プロトコル) → TCP接続を使用
  • ESTAB(状態) → 接続が確立されている状態(クライアントとサーバーが正常に通信中)
  • Recv-Q: 0(受信キュー) → サーバー側で受信待ちのデータはなし
  • Send-Q: 0(送信キュー) → 送信待ちのデータはなし(通信がスムーズ)
  • Local Address:Port192.168.1.10:22サーバー(192.168.1.10)がSSH(ポート22) でクライアントと通信中
  • Peer Address:Port203.0.113.10:60234クライアント(203.0.113.10)がポート 60234 からSSH接続している

この行の情報から、サーバー 192.168.1.10 にクライアント 203.0.113.10(外部ネットワークのIPアドレス)がSSHで接続していることが分かります。

出力結果の詳細解説(外部接続)
外部接続を確認することで接続先の情報を把握できます。
プロトコルと状態
"tcp ESTAB"はプロトコルがTCPであり、接続状態が確立済み(ESTABLISHED)であることを示します。通信が正常に行われていることを確認できます。
ローカルアドレスとポート
"192.168.1.10:22"はローカルマシンがIPアドレス192.168.1.10で、22番ポートを使用していることを示します。主にSSH接続で使われます。
リモートアドレスとポート
"203.0.113.10:60234"はリモートマシンがIPアドレス203.0.113.10で、60234番ポートを使用していることを示します。外部接続先の情報です。
出力結果の詳細解説(外部接続)について

この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。