Linuxでプロセスが占有するポート番号を表示する

Linuxでプロセスが占有するポート番号を表示する

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッスンしているかどうかを知ることは非常に重要です。ポート関連の問題に対処する必要がある場合は、この記事が役立つかもしれません。

ポートは、物理ポートやソフトウェア ポートなど、Linux システム上の特定のプロセス間の論理接続の識別子です。 Linux オペレーティング システムはソフトウェアであるため、この記事ではソフトウェア ポートについてのみ説明します。ソフトウェア ポートは常にホストの IP アドレスと関連する通信プロトコルに関連付けられているため、ポートはアプリケーションを区別するために使用されることがよくあります。ネットワークに関わるほとんどのサービスは、着信ネットワーク要求をリッスンするためにソケットを開く必要があり、各サービスは個別のソケットを使用します。

ソケットは、IP アドレス、ソフトウェア ポート、およびプロトコルと組み合わせて使用​​されます。ポート番号は、伝送制御プロトコル (TCP) とユーザー データグラム プロトコル (UDP) の両方に適用されます。TCP と UDP はどちらも、通信に 0 ~ 65535 のポート番号を使用できます。

ポート割り当てのカテゴリは次のとおりです。

  • 0 - 1023: 共通ポートとシステムポート
  • 1024 - 49151: ソフトウェア登録ポート
  • 49152 - 65535: 動的ポートまたはプライベートポート

予約済みポートの詳細については、Linux の /etc/services ファイルを参照してください。

# /etc/services を減らす
# /etc/サービス:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
# ネットワークサービス、インターネットスタイル
# IANA サービス バージョン: 最終更新日 2013-04-10
# 現在、IANAのポリシーでは、1つのよく知られた
# TCPとUDPの両方のポート番号。したがって、ほとんどのエントリには2つのエントリがあります
# プロトコルが UDP 操作をサポートしていない場合でも同様です。
# RFC 1700、「割り当てられた番号」(1994年10月)から更新されました。すべてのポートが
# は、より一般的なものだけが含まれています。
# 最新のIANAポート割り当ては以下から取得できます。
# http://www.iana.org/assignments/port-numbers
# 既知のポートは 0 から 1023 までです。
# 登録ポートは1024から49151までです
# ダイナミックポートおよび/またはプライベートポートは49152から65535までです
# 各行は 1 つのサービスを表し、次の形式になります。
# サービス名 ポート/プロトコル [エイリアス ...] [# コメント]
tcpmux 1/tcp # TCP ポート サービス マルチプレクサ
tcpmux 1/udp # TCP ポート サービス マルチプレクサ
rje 5/tcp # リモートジョブエントリ
rje 5/udp # リモートジョブエントリ
エコー7/tcp
エコー7/udp
破棄 9/tcp シンク null
破棄 9/udp シンク null
systat 11/tcp ユーザー
systat 11/udp ユーザー
昼間 13/tcp
昼間 13/udp
qotd 17/tcp 引用
qotd 17/udp 引用
msp 18/tcp # メッセージ送信プロトコル (履歴)
msp 18/udp # メッセージ送信プロトコル (履歴)
チャージン 19/tcp ttytst ソース
チャージン 19/udp ttytst ソース
ftpデータ 20/tcp
ftpデータ 20/udp
# 21 は ftp に登録されていますが、fsp でも使用されます
FTP 21/TCP
ftp 21/udp fsp fspd
ssh 22/tcp # セキュア シェル (SSH) プロトコル
ssh 22/udp # セキュア シェル (SSH) プロトコル
テルネット 23/tcp
テルネット 23/udp
# 24 - プライベートメールシステム
lmtp 24/tcp # LMTP メール配信
lmtp 24/udp # LMTP メール配信

ポート情報を表示するには、次の 6 つの方法を使用できます。

  • ss: ソケット統計をダンプするために使用できます。
  • netstat: 開いているソケットのリストを表示できます。
  • lsof: 開いているファイルを一覧表示できます。
  • fuser: ファイルを開いているプロセスのプロセス ID を一覧表示できます。
  • nmap: ネットワーク検出ツールおよびポート スキャナーです。
  • systemctl: systemd システムの制御マネージャーおよびサービス マネージャーです。

次に、sshd デーモンが使用するポート番号を確認します。

方法1: ssコマンドを使用する

ss は通常、ソケット統計をダンプするために使用されます。 netstat と同様の出力を生成しますが、他のツールよりも多くの TCP 情報とステータス情報を表示します。

また、PACKET、TCP、UDP、DCCP、RAW、Unix ドメインなど、あらゆる種類のソケット統計を表示することもできます。

# ss -tnlp | grep ssh
LISTEN 0 128 *:22 *:* ユーザー:(("sshd",pid=997,fd=3))
LISTEN 0 128 :::22 :::* ユーザー:(("sshd",pid=997,fd=4))

ポート番号を使用して確認することもできます。

# ss -tnlp | grep ":22"
LISTEN 0 128 *:22 *:* ユーザー:(("sshd",pid=997,fd=3))
LISTEN 0 128 :::22 :::* ユーザー:(("sshd",pid=997,fd=4))

方法2: netstatコマンドを使用する

netstat は、ネットワーク接続、ルーティング テーブル、インターフェイス統計、マスカレード接続、およびマルチキャスト メンバーシップを表示できます。

デフォルトでは、netstat は開いているソケットを一覧表示します。アドレス ファミリを指定しない場合は、設定されているすべてのアドレス ファミリのアクティブなソケットが表示されます。しかし、netstat は時代遅れなので、代わりに ss が使用されるのが一般的です。

# netstat -tnlp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 997/sshd
tcp6 0 0 :::22 :::* 997/sshdをリッスン

ポート番号を使用して確認することもできます。

# netstat -tnlp | grep ":22"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1208/sshd
tcp6 0 0 :::22 :::* 1208/sshdを聴く

方法3: lsofコマンドを使用する

lsof は、開いているファイルを一覧表示したり、システム上のプロセスによって開かれたファイルに関する情報を一覧表示したりできます。

# lsof -i -P | grep ssh
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
sshd 11584 ルート 3u IPv4 27625 0t0 TCP *:22 (LISTEN)
sshd 11584 ルート 4u IPv6 27627 0t0 TCP *:22 (LISTEN)
sshd 11592 ルート 3u IPv4 27744 0t0 TCP vps.2daygeek.com:ssh->103.5.134.167:49902 (確立済み)

ポート番号を使用して確認することもできます。

# lsof -i tcp:22
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
sshd 1208 ルート 3u IPv4 20919 0t0 TCP *:ssh (LISTEN)
sshd 1208 ルート 4u IPv6 20921 0t0 TCP *:ssh (LISTEN)
sshd 11592 ルート 3u IPv4 27744 0t0 TCP vps.2daygeek.com:ssh->103.5.134.167:49902 (確立済み)

方法4: fuserコマンドを使用する

fuser ツールは、ローカル システム上でファイルを開いているプロセスのプロセス ID を標準出力に表示します。

# フューザー -v 22/tcp
ユーザー PID アクセス コマンド
22/tcp: ルート 1208 F....sshd
ルート 12388 F....sshd
ルート 49339 F....sshd

方法5: nmapコマンドを使用する

nmap (「Network Mapper」) は、ネットワーク検出およびセキュリティ監査用のオープン ソース ツールです。もともとは大規模ネットワークの高速スキャン用に設計されましたが、単一のホストのスキャンにも適しています。

nmap は、生の IP パケットを使用して、ネットワーク上で利用可能なホスト、それらのホストのサービス (アプリケーション名とバージョンを含む)、ホストが実行しているオペレーティング システム (OS バージョンなどの情報を含む)、使用中のパケット フィルターまたはファイアウォールの種類、およびその他の多くの情報を決定します。

# nmap -sV -p 22 ローカルホスト
2018-09-23 12:36 IST に Nmap 6.40 ( http://nmap.org ) を起動
ローカルホスト (127.0.0.1) の Nmap スキャン レポート
ホストは稼働しています (遅延 0.000089 秒)。
ローカルホストのその他のアドレス(スキャンされていません): 127.0.0.1
港湾国サービスバージョン
22/tcp オープン ssh OpenSSH 7.4 (プロトコル 2.0)
サービス検出が実行されました。誤った結果がある場合は、http://nmap.org/submit/ に報告してください。
Nmap 完了: 1 つの IP アドレス (1 つのホストが稼働中) を 0.44 秒でスキャンしました

方法6: systemctlコマンドを使用する

systemctl は、systemd システムの制御マネージャーおよびサービス マネージャーです。これは古い SysV init システム管理に代わるもので、現在ほとんどの最新の Linux オペレーティング システムで使用されています。

# systemctl ステータス sshd
● sshd.service – OpenSSH サーバーデーモン
ロード済み: ロード済み (/usr/lib/systemd/system/sshd.service; 有効; ベンダープリセット: 有効)
アクティブ: 2018-09-23 02:08:56 EDT (日) からアクティブ (実行中)、6 時間 11 分前
ドキュメント: man:sshd(8)
man:sshd_config(5)
メイン PID: 11584 (sshd)
Cグループ: /system.slice/sshd.service
└─11584 /usr/sbin/sshd -D
9月23日 02:08:56 vps.2daygeek.com systemd[1]: OpenSSHサーバーデーモンを起動しています...
9月23日 02:08:56 vps.2daygeek.com sshd[11584]: サーバーは0.0.0.0ポート22でリッスンしています。
9月23日 02:08:56 vps.2daygeek.com sshd[11584]: サーバーはポート22でリッスンしています。
9月23日 02:08:56 vps.2daygeek.com systemd[1]: OpenSSHサーバーデーモンを起動しました。
9月23日 02:09:15 vps.2daygeek.com sshd[11589]: 103.5.134.167 ポート49899 によって接続が閉じられました [preauth]
9月23日 02:09:41 vps.2daygeek.com sshd[11592]: 103.5.134.167 ポート 49902 ssh2 から root のパスワードを受け入れました

上記の出力は、sshd サービスが前回開始されたときの ssh サービスのリスニング ポートを示しています。しかし、最新のログは出力に更新されません。

# systemctl ステータス sshd
● sshd.service – OpenSSH サーバーデーモン
ロード済み: ロード済み (/usr/lib/systemd/system/sshd.service; 有効; ベンダープリセット: 有効)
アクティブ: 2018-09-06 07:40:59 IST よりアクティブ (実行中)、2 週間 3 日前
ドキュメント: man:sshd(8)
man:sshd_config(5)
メイン PID: 1208 (sshd)
Cグループ: /system.slice/sshd.service
├─ 1208 /usr/sbin/sshd -D
├─23951 sshd: [承認済み]
└─23952 sshd: [ネット]
9月23日 12:50:36 vps.2daygeek.com sshd[23909]: 95.210.113.142 ポート51666からの無効なユーザーpi
9月23日 12:50:36 vps.2daygeek.com sshd[23909]: input_userauth_request: 無効なユーザー PI [preauth]
9月23日 12:50:37 vps.2daygeek.com sshd[23911]: pam_unix(sshd:auth): チェック合格; ユーザーは不明
9月23日 12:50:37 vps.2daygeek.com sshd[23911]: pam_unix(sshd:auth): 認証失敗; logname= uid=0 euid=0 tty=ssh ruser= rhost=95.210.113.142
9月23日 12:50:37 vps.2daygeek.com sshd[23909]: pam_unix(sshd:auth): チェック合格; ユーザーは不明
9月23日 12:50:37 vps.2daygeek.com sshd[23909]: pam_unix(sshd:auth): 認証失敗; logname= uid=0 euid=0 tty=ssh ruser= rhost=95.210.113.142
9月23日 12:50:39 vps.2daygeek.com sshd[23911]: 95.210.113.142 ポート 51670 ssh2 からの無効なユーザー pi のパスワードに失敗しました
9月23日 12:50:39 vps.2daygeek.com sshd[23909]: 95.210.113.142 ポート 51666 ssh2 からの無効なユーザー pi のパスワードに失敗しました
9月23日 12:50:40 vps.2daygeek.com sshd[23911]: 95.210.113.142 ポート51670 によって接続が閉じられました [preauth]
9月23日 12:50:40 vps.2daygeek.com sshd[23909]: 95.210.113.142 ポート51666 によって接続が閉じられました [preauth]

ほとんどの場合、上記の出力にはプロセスの実際のポート番号は表示されません。このとき、ログ ファイルの詳細情報を確認するには、次の journalctl コマンドを使用することをお勧めします。

# journalctl | grep -i "openssh|sshd"
9月23日 02:08:56 vps138235.vps.ovh.ca sshd[997]: 信号15を受信しました。終了しています。
9月23日 02:08:56 vps138235.vps.ovh.ca systemd[1]: OpenSSHサーバーデーモンを停止しています...
9月23日 02:08:56 vps138235.vps.ovh.ca systemd[1]: OpenSSHサーバーデーモンを起動しています...
9月23日 02:08:56 vps138235.vps.ovh.ca sshd[11584]: サーバーは0.0.0.0ポート22でリッスンしています。
9月23日 02:08:56 vps138235.vps.ovh.ca sshd[11584]: サーバーはポート22でリッスンしています。
9月23日 02:08:56 vps138235.vps.ovh.ca systemd[1]: OpenSSHサーバーデーモンを起動しました。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • プロセスのすべての情報を表示するLinuxメソッドの例
  • Linuxでプロセススタック情報を表示する方法
  • Linux でプロセスによって開かれたファイル ハンドルの数を表示する方法と、その数を変更する方法
  • Linux でのプロセス メモリ使用量の表示に関する詳細な理解
  • LINUX でプロセスを表示する 4 つの方法 (要約)

<<:  Vue プロジェクトをパッケージ化して Apache サーバーにデプロイする手順

>>:  シェルスクリプトを使用したMySQLデータベースの自動バックアップ

推薦する

Alibaba Cloud Server に MySQL データベースをインストールする詳細なチュートリアル

目次序文1. MySQLをアンインストールする2. MySQLをインストールする要約する序文学習中に...

Mysql の mysql.user ユーザー テーブルの詳細な説明

MySQL は、異なるユーザーに異なる権限を割り当てることができるマルチユーザー管理データベースであ...

CSS3 での 2D および 3D 変換の実装

CSS3 は、要素の 2D 平面変換と視覚的な 3D 空間変換を実装します。2D 変換はより頻繁に使...

Tomcat での jar のロードに関する異常な問題の分析と解決

現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...

jQueryはシャトルボックス機能を実現する

この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...

Linux で Bash 環境変数を設定する方法

Shell は C 言語で書かれたプログラムであり、ユーザーが Linux を使用するための橋渡しと...

CSS で div 凹角スタイルを実装するサンプル コード

通常の開発では、凸型の丸い角、つまり border-radius 属性を使用するのが一般的です。凹角...

Vue が Bibibili のホームページを模倣する際の問題

エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...

Ubuntuのpython3でvenvを使用して仮想環境を作成する

1. 仮想環境はプロジェクトに従い、単一のプロジェクト用の仮想環境を作成します(Python 3.4...

Webデザインと制作のテスト問題と参考回答

<br />Web デザインと制作テスト パート I 多肢選択問題 1. 単一選択問題 ...

CocosCreator の新しいリソース管理システムの分析

目次1. 資源と建設1.1 クリエイターリソースファイルの基本1.2 リソースの構築2. アセットバ...

SQL における distinct と row_number() over() の違いと使い方

1 はじめにデータベース内のデータを操作するための SQL 文を記述するときに、いくつかの不快な問題...

WeChatアプレットコンポーネントライフサイクルの落とし穴の記録

通常、コンポーネントのライフサイクルは、ビジネス ロジックが始まる場所です。ビジネスシナリオが複雑で...

CSS 表示テーブルの適応的な高さと幅の問題の解決策

定義と使用法display プロパティは、要素が生成するボックスのタイプを指定します。例示するこの属...

計算機機能を実装するミニプログラム

この記事の例では、計算機機能を実装するためのミニプログラムの具体的なコードを参考までに共有しています...