Linux / コマンド / ss - 開いているポートとソケット接続の状態を確認
ssは、アプリが通信に使う端点であるソケットの状態を調べるiproute2のツールです。TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)の待ち受けポート、相手との接続情報などを確認できます。
オプションなしでは、既定で待ち受け中のソケットを除いた一覧を表示します。サーバーポートを調べるときは-lで待ち受けソケットを選び、-t・-uでTCP・UDPを指定します。-pは使用プロセスを表示しますが、他のユーザーの情報は権限によって見えない場合があります。
基本的な文法
ss [オプション] [フィルター]
インストールされている実装とオプションは、配布版によって異なる場合があります。man ssで現在のシステムの説明を確認してください。
使用例
TCPの待ち受けポート
数字のアドレス・ポートでサービスの待機状態を確認します。
ss -ltn
TCP・UDPの待ち受けポートとプロセス
どのプロセスがポートを使用しているか確認します。必要に応じてsudoを使用します。
sudo ss -ltnup
特定のポートの接続
TCPの待ち受け以外のソケットから、ローカル側のポート(sport)または相手側のポート(dport)が22に一致するものを表示します。待ち受けポートの有無を調べる例とは区別してください。
ss -tn '( sport = :22 or dport = :22 )'
リスニングソケットをどう読むか?
ss -ltnはTCP(-t)で接続を待機している(-l)ソケットを数字のアドレス・ポート(-n)で表示します。
ss -ltn
例の出力の一部(アドレスとキューサイズは環境によって異なります):
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
0.0.0.0:22はすべてのIPv4ローカルアドレスの22番ポートで待機していることを意味します。ソケットがリスニング中であるという事実だけで、ファイアウォールや外部ネットワークからアクセス可能と結論づけることはできません。プロセス名は-pとして確認できますが、権限によって一部が隠されます。
127.0.0.1:ポートにのみバインドされたサービスは、同じコンピュータ上では接続できますが、外部インターフェースから直接アクセスすることはできません。0.0.0.0にバインドされていても、ファイアウォールやセキュリティグループによってブロックされる可能性があります。ポート競合を調査する場合、権限が許可されていればss -ltnpで所有プロセスを確認してください。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
-l |
受信待機ソケットを表示します。 |
-t / -u |
TCPまたはUDPソケットを選択します。 |
-n |
アドレスとポートを数字で表示します。 |
-p |
ソケットを使用しているプロセス情報を表示します。 |
-a |
待ち受け中と待ち受け以外のソケットを含みます。 |
-s |
プロトコルごとのソケットの概要を表示します。 |
使用する際の注意点
サービスが127.0.0.1でのみリスニングしている場合、外部から接続することはできず、0.0.0.0でリスニングしているからといってファイアウォールまで開かれているという意味ではありません。UDPにはTCPのような接続確立の手順がありませんが、アプリが相手を固定したUDPソケットは接続済みとして表示されることがあります。-pのプロセス情報が空の場合、権限を確認してください。アドレスやルートは、ipによるインターフェースとルーティングの確認で切り分けます。
よくある質問
ssでポートは見えるのに外部から接続できない理由は?
受信アドレスがループバックかどうか、ファイアウォール・ルーティング・クラウドセキュリティルールで許可されているかを別途確認する必要があります。
公式ドキュメント
オプションの正確な動作や実装ごとの違いはssの公式ドキュメントで確認できます。




