最終更新日 2025年2月1日

ss コマンドとは?
ss(Socket Statistics)コマンドは、Linuxでネットワークの接続状況を確認するためのツールです。
サーバーの運用管理やトラブルシューティングの際に、現在の通信状態やリスニング中のポートを迅速に把握するのに役立ちます。
ネットワークの正常な動作を維持するためには、どのポートが開いているのか、どのIPアドレスと通信しているのかを適切に監視することが重要です。
例えば、サーバーが特定のポートで適切に待機しているか、不審な接続が存在しないかを ss コマンドを使って簡単に確認できます。
SSコマンドの概要については下記で紹介しているので興味があったら見てみてください!

ss コマンドの基本的な使い方
ss
コマンドは、オプションを組み合わせることで、さまざまなネットワーク情報を取得することができます。以下に代表的なオプションをいくつか紹介します。
ss -t
(TCP接続の表示)
TCP接続に関する情報を表示します。HTTPやSSHなど、TCPプロトコルを利用する接続の状態を確認する際に使用します。
ss -u
(UDP接続の表示)
UDP接続に関する情報を表示します。DNSやNTPなど、UDPプロトコルを利用する接続を確認する際に使用します。
ss -l
(リスニング中のポートの表示)
サーバーが現在リスニングしているポート(接続を待機しているポート)を表示します。
ss -a
(すべてのソケット情報を表示)
リスニング中のソケットと、確立済みの接続を含むすべてのソケット情報を表示します。ネットワーク全体の状況を一度に把握する際に使用します。
ss -n
(ホスト名を解決せずに表示)
ホスト名(例:localhost
)をIPアドレスで直接表示します。名前解決の処理を省略するため、表示が高速化されます。
SSコマンドのオプションの使い方や、出力結果の見方については下記で紹介しているので興味があったら見てみてください!
![ss コマンドの基本的な使い方
ss コマンドはネットワーク情報を取得できるコマンドです。
基本操作方法
ss コマンドは、特定のオプションを指定することで、ネットワーク接続に関する詳細な情報を表示します。基本コマンドは「ss [オプション]」です。
代表的なオプション
代表的なオプションには、TCP接続を表示する「-t」、UDP接続を表示する「-u」、リスニング中のポートを表示する「-l」などがあります。
出力結果の見方
各オプションの出力結果には、接続状態や受信/送信キュー、ローカル/ピアアドレスなどが含まれます。](https://www.goritarou.com/wp-content/uploads/2025/01/image-120.png)
ss コマンドの出力結果の見方
ss
コマンドを実行すると、現在のネットワーク接続に関する情報が一覧で表示されます。
出力結果にはさまざまな項目が含まれており、それぞれの意味を正しく理解することで、ネットワークの状態を詳しく把握できます。
ここでは、ss
コマンドの出力結果の各項目の意味と、接続状態(State)の種類について詳しく解説します。
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.1.10:22 192.168.1.50:50123
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
出力結果で表示される各項目の意味や、実際の出力結果をもとにした見方、解説を以降のセクションで記載します。
- State(接続の状態)
- Recv-Q(受信キュー)
- Send-Q(送信キュー)
- Local Address:Port(ローカルアドレスとポート)
- Peer Address:Port(接続先のアドレスとポート)

State(接続の状態)
この項目は、ネットワーク接続の現在の状態 を表します。この項目では下記4種類の状態が表示されます。
状態 | 説明 |
---|---|
LISTEN | サーバーがクライアントからの接続を待機している状態(WebサーバーやSSHサーバーなど) |
ESTABLISHED | クライアントとサーバーの間で接続が確立され、通信が行われている状態 |
TIME-WAIT | 接続が終了し、完全に閉じるまでの待機状態 |
CLOSE-WAIT | 相手から接続終了の通知を受け取ったが、まだ処理が完了していない状態 |
実際の出力結果と見方
下記出力では、下記の内容を読み取ることができます。
①このサーバーはSSH(ポート22)で外部からの接続を待ち受けている
②192.168.1.50
のPCがSSHで 192.168.1.10
に接続している(ログイン中)
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
ESTABLISHED 0 0 192.168.1.10:22 192.168.1.50:50123
各行の出力結果の見方の詳細
① LISTEN の行
- 状態 (
LISTEN
)- これは「待ち受け中(リッスン)」の状態です。サーバーが 外部からの接続を受け付ける準備ができている ことを意味します。
- ポート (
22
)22
番ポートは SSH(Secure Shell) の通信に使われるポートです。つまり、このサーバーは SSH接続を受け付ける状態 になっています。
- アドレス (
0.0.0.0
)0.0.0.0
は 全てのネットワークインターフェース で待ち受けることを意味します。簡単に言うと、どのIPアドレスからでもSSH接続ができる状態です。
② ESTABLISHED の行
- 状態 (
ESTABLISHED
)- 「確立済み(ESTABLISHED)」は 現在、接続が確立されている状態 を表します。つまり、すでに誰かがSSH接続中です。
- サーバー側 (
192.168.1.10:22
)- サーバーのIPアドレスは
192.168.1.10
で、SSH(ポート22)で接続を受けています。
- サーバーのIPアドレスは
- 接続元 (
192.168.1.50:50123
)192.168.1.50
というコンピュータが50123
番のポートを使ってこのサーバーに接続しています。これは、リモートからSSHでログインしているPCのIPアドレスです。
Recv-Q(受信キュー)
Recv-Q
は、サーバーやクライアントが受信待ちのデータ量(バイト単位) を示します。
この値が 0
であれば、現在受信待ちのデータはありません。
しかし、Recv-Q
の値が大きい場合、「サーバーやクライアントが受信すべきデータを処理しきれず、キューに溜まっている」 ことを意味します。この場合下記の問題の可能性が考えられます。
- 通信が遅れている
- ネットワークの混雑が発生している
- サーバーの処理能力が追いついていない
実際の出力例
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTABLISHED 5000 0 192.168.1.10:22 192.168.1.50:50123
この場合、Recv-Q
が 5000
なので、5000バイトのデータが受信待ちのまま残っている ことが分かります。サーバー側の負荷が高いか、通信の遅延が発生している可能性があります。
出力結果の見方の詳細
- SSH接続 (
ESTABLISHED
) は確立されている192.168.1.50
のPCが192.168.1.10
のSSHサーバーにログイン中
Recv-Q
(受信キュー)が5000バイト- サーバー側で処理しきれていないデータが溜まっている ことを意味する
- 通常、
Recv-Q
は 0かごく小さい値 であるべき 5000
という値は 何か問題が発生している可能性が高い
Send-Q
(送信キュー)は0なので問題なし- サーバーからクライアントへのデータ送信は詰まっていない
<なぜ Recv-Q が増えているのか?>
Recv-Q が5000というのは、クライアントからのデータをサーバーが受け取っているけれど、まだ処理できていないことを意味します。
原因としては以下が考えられます。
① クライアントが大量のデータを送信している
クライアント (192.168.1.50) から 大量のSSHデータ(コマンドやファイル転送) が送られている
例: scp や rsync で大きなファイルを転送中
② サーバー側の負荷が高く、処理が追いついていない
・CPUやメモリの使用率が高く、データの処理が遅れている
⇒top や htop コマンドで サーバーの負荷を確認しましょう。
③ ネットワークの遅延やパケットロス
・回線速度が遅い、または パケットロスが発生している
⇒ping や netstat -i でネットワークの状態をチェック
④ クライアント側の問題
・クライアントが 応答を停止(フリーズ・切断しかけている)
⇒クライアントの負荷を top コマンドなどで確認しましょう。

Send-Q(送信キュー)
Send-Q
は、サーバーやクライアントが送信待ちのデータ量(バイト単位) を示します。
通常、この値は 0
ですが、大きな値になっている場合、データの送信がスムーズに行われていない 可能性があります。
Send-Q
が増える原因としては、以下のようなものがあります。
- 相手側がデータを受け取れていない(ネットワークの遅延)
- サーバーやクライアントの帯域幅が不足している
- ファイアウォールやルーターの設定で送信がブロックされている
実際の出力結果
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTABLISHED 0 3000 192.168.1.10:22 192.168.1.50:50123
この場合、Send-Q
が 3000
なので、サーバーが3000バイトのデータを送信しようとしているが、まだ送信が完了していない 状態を示します。
ネットワークが詰まっているか、通信相手がデータを受け取れていない可能性があります。
出力結果の見方の詳細
- SSH接続 (
ESTABLISHED
) は確立されている192.168.1.50
のPCが192.168.1.10
にSSHでログイン中
Send-Q
(送信キュー)が3000- サーバー側が送信しようとしているデータが3000バイト溜まっている
- つまり、クライアント側(192.168.1.50)がデータを受け取れていない、もしくは受け取るのが遅い
- 通常、
Send-Q
は 0か小さい値 であるべき 3000
という値は、通信が詰まっている可能性を示唆
Recv-Q
(受信キュー)は0なので、サーバーの受信処理は問題なし- クライアントからのデータ受信は正常
<なぜ Send-Q が増えているのか?>
① クライアント側(192.168.1.50)が遅い or 応答していない
・クライアントが高負荷になっている
・クライアントのネットワークが遅い(Wi-Fiの不調、回線の遅延など)
・クライアントが一時的にフリーズしている
② ネットワークの問題
・サーバー→クライアントへの通信が遅延している
・パケットロス(途中でデータが失われている)
⇒ping や netstat -i でネットワークの状態を確認しましょう。
③ クライアントが大容量データを受信している
・cat や less で大きなログを見ている
・scp で大きなファイルを受信している
・rsync でファイル転送中
④ クライアントが切断しかけている
・192.168.1.50 のPCがスリープ・シャットダウン・ネットワーク切断中

Local Address:Port(ローカルアドレスとポート)
Local Address:Port
は、自身のマシンのIPアドレスとポート番号 を表します。
この情報を見ることで、どのIPアドレスがどのポートを使って通信しているかが分かります。
例えば、以下のような出力を見てみましょう。
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTABLISHED 0 0 192.168.1.10:22 192.168.1.50:50123
この場合、Local Address:Port
は 192.168.1.10:22
なので、サーバー(自身)のIPアドレス 192.168.1.10
のポート22(SSH)で接続(待ち受け) しているということが分かります。
つまり、このサーバーがSSH(22番ポート)を使ってクライアントと通信を行っている(待ち受け) ことが分かります。

Peer Address:Port(接続先のアドレスとポート)
Peer Address:Port
は、通信相手(クライアントや別のサーバー)のIPアドレスとポート番号 を示します。
この部分を見ることで、サーバーがどのクライアントと通信しているのかが分かります。
例えば、以下の出力を見てみましょう。
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTABLISHED 0 0 192.168.1.10:22 192.168.1.50:50123
この場合、Peer Address:Port
は 192.168.1.50:50123
なので、 クライアント 192.168.1.50
が動的ポート(50123番)を使ってサーバー(192.168.1.10:22)にSSH接続中ということが分かります。
※クライアントがサーバーに接続する際、クライアント側はランダムなポート(動的ポート)を使用 します。そのため、50123
のように、1024以上のポート番号が表示されることが一般的です。

接続状態(State)の種類と意味
ss
コマンドを実行すると、ネットワーク接続の状態を表す State(ステータス) が表示されます。
このステータスを理解することで、サーバーがどのような状態で通信を行っているのかを把握できます。ここでは、接続状態を詳しく解説します。

LISTEN(接続待機中)
LISTENステータスはサーバーがクライアントからの接続を待っている状態を示します。
例えば、Webサーバー(Apache/Nginx)やSSHサーバー(sshd)は、クライアントのリクエストを待つために LISTEN
状態になります。LISTEN
状態になっているポートは、外部からの接続を受け付ける準備ができています。
出力例
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
この場合、下記の内容が読み取れます。
- ポート80(HTTP)がクライアントからの接続を待機している
0.0.0.0:80
は、どのIPアドレスからの接続も受け入れる設定(全てのインターフェースで待機)

ESTABLISHED(接続確立済み)
ESTABLISHEDステータスは、クライアントとサーバーの間で 接続が確立し、データ通信が行われている状態を示します。クライアントがWebサイトを閲覧していたり、SSHでサーバーにログインしていると、この状態になります。
出力例
ESTAB 0 0 192.168.1.10:22 192.168.1.50:50123
この場合、下記の内容が読み取れます。
- サーバー(192.168.1.10)のSSH(ポート22)に、クライアント(192.168.1.50)が接続している
- クライアントのポート
50123
は、動的ポート(接続ごとに割り当てられるポート)

TIME-WAIT(接続終了待ち)
TIME-WAITステータスは、接続が終了し、完全に閉じるまでの待機状態を示します。接続が突然切れた場合や、大量の接続を処理した後によく発生します。
通常は数十秒で消えますが、大量に発生している場合はサーバーの設定を見直す必要があります。
出力例
TIME-WAIT 0 0 192.168.1.10:443 203.0.113.100:50234
この場合、下記の内容が読み取れます。
- サーバー(192.168.1.10)のHTTPS(ポート443)の接続が終了し、待機状態に入っている
- クライアント(203.0.113.100)がWebサイトを閲覧していたが、接続が切れた後の状態

TIME-WAITが多すぎるとどうなるんですか?

TIME-WAITが多すぎると、サーバーのリソース(ポートやメモリ)を消費し、パフォーマンスが低下する可能性があります。
その場合は、ss -tan state time-wait を実行して、どのポートで発生しているかを確認しましょう。

CLOSE-WAIT(相手からの接続終了待ち)
CLOSE-WAITステータスは、クライアントやサーバーのどちらかが接続を終了したが、もう一方の処理が完了していない状態を示します。
通常、クライアントが接続を閉じた際に発生しますが、アプリケーションの問題で長時間続くことがあります。
出力例
CLOSE-WAIT 0 0 192.168.1.10:3306 192.168.1.200:55021
この場合、サーバー(192.168.1.10)のMySQL(ポート3306)に、クライアント(192.168.1.200)が接続していたが、終了処理が完了していないという状況です。

CLOSE-WAITが増え続けてしまう場合どうやったら対策できますか?

CLOSE-WAITが増え続ける場合、アプリケーションが適切に接続を閉じていない可能性が高いです。
そのため、ss -tan state close-wait でどのポートで発生しているかを確認し、対象のプロセスを特定して修正する必要があります。

SYN-SENT(接続要求中)
SYN-SENTステータスは、クライアントがサーバーに接続しようとしているが、まだ確立していない状態、SYN
パケットを送信済みだが、サーバーからの応答(SYN-ACK)が返ってきていないという状態を指します。
ネットワークの問題や、サーバー側のファイアウォールによるブロックが原因の可能性があります。
出力例
SYN-SENT 0 0 192.168.1.50:50500 192.168.1.10:443
この場合、クライアント(192.168.1.50)がサーバー(192.168.1.10)のHTTPS(443番ポート)に接続しようとしているが、まだ応答がないという状況ということになります。

SYN-SENTが多い場合、何が原因で多くなっているんでしょうか。

SYN-SENTが多い場合、以下の3つが原因と考えられます。
①サーバーのポートが開いていない
②ファイアウォールやセキュリティ設定によるブロック
③ネットワーク遅延やパケットロス


ゴリタン
インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。
CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。