GNU/Linux >> Linux の 問題 >  >> Linux

特定のポートでリッスンしているサービスを見つける方法

このガイドでは、Linuxの特定のポートでリッスンしているサービスを見つけるためのいくつかの異なる方法について説明します。ほとんどの人は、人気のあるサービスまたはプロセスのデフォルトのポートを知っています。たとえば、Apacheのデフォルトポートは80、FTPデフォルトポートは21、SSHデフォルトポートは22です。このガイドで説明されているように、Linuxのポート名と番号を確認できます。 。 Linuxサーバーを保護するために、デフォルトのポート番号を任意のカスタムポートに変更することもできます。たとえば、次のガイドでは、Apache、FTP、SSHのデフォルトポートを別のポートに変更する方法について説明しています。

  • Apacheのデフォルトポートをカスタムポートに変更する方法
  • FTPのデフォルトポートをカスタムポートに変更する方法
  • SSHのデフォルトポートをカスタムポートに変更する方法

デフォルトのポート番号が変更された場合、どのサービスがどのポートでリッスンしているのかをどのように見つけますか?それが私たちが今見つけようとしていることです!

Linuxの特定のポートでリッスンしているサービスを見つける

特定のポート番号で実行されているサービスを確認するために、以下の4つの方法をリストしました。今後、新しい方法に出くわした場合は、このリストを更新し続けます。だから、それをブックマークして、たまにチェックしてください。

方法1-netstatを使用する

これは、どのサービスがどのポートでリッスンしているかを見つけるために最も一般的に使用される方法です。 Netstat は、ネットワーク接続、ルーティングテーブル、インターフェイス統計、マスカレード接続、およびマルチキャストメンバーシップを印刷するために使用されるコマンドラインユーティリティです。

Netstatは、ほとんどのLinuxディストリビューションのデフォルトのリポジトリで利用できます。

Arch Linuxとそのバリアントにインストールするには、次のようにします。

$ sudo pacman -S net-tools

CentOSでは、RHEL:

$ sudo yum install net-tools

Fedoraの場合:

$ sudo dnf install net-tools

Debian、Ubuntuの場合:

$ sudo apt install net-tools

インストールしたら、次のコマンドを実行して、どのサービスがどのポートでリッスンしているかを確認します。

$ sudo netstat -tulpn

出力例:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      665/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1026/sshd           
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      2068/python3        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1072/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1026/sshd           
tcp6       0      0 :::80                   :::*                    LISTEN      1062/apache2        
udp        0      0 127.0.0.53:53           0.0.0.0:*                           665/systemd-resolve 
udp        0      0 192.168.225.22:68       0.0.0.0:*                           647/systemd-network 
udp        0      0 192.168.225.53:68       0.0.0.0:*                           647/systemd-network 
udp6       0      0 fe80::a00:27ff:feff:546 :::*                                647/systemd-network 
udp6       0      0 fe80::a00:27ff:fe7e:546 :::*                                647/systemd-network

ご覧のとおり、Pythonサービス( simpleHTTPserver この場合)はポート番号8000でリッスンし、mysqldサービスはポート3306でリッスンし、sshサービスはポート番号22で実行され、apache2はポート80で実行されます。

ここで

  • -t フラグはtcp接続を示します。
  • -u フラグはUDP接続を示します。
  • -l <​​/ code> フラグはリスニングソケットを表示します。
  • -p フラグは、プロセスID(PID)とそのポートを使用しているもののプロセス名を表示します。
  • -n フラグは数値アドレスを表示します。

上記のコマンドは、すべてのサービスとそれらがリッスンしているポート番号を一覧表示します。特定のポートでリッスンしているサービスを見つけたい場合はどうなりますか?ここにgrepコマンドがあります 重宝します! netstatを組み合わせることができます およびgrep mysqld など、特定のサービスの出力をフィルタリングするコマンド 、以下のように。

$ sudo netstat -tulpn | grep mysqld
[sudo] password for sk: 
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

見る? mysqldサービスはポート番号3306でリッスンしています。

ポート番号はすでにわかっているが、現在どのサービスが使用しているかわからない場合は、以下に示すように、サービス名をポート番号に置き換えるだけです。

$ sudo netstat -tulpn | grep -w 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

ここでは、 -w flagは、単語全体を形成する一致を含む行のみを表示します。つまり、 -w オプションは、指定された文字列の完全一致を示します。

-iを使用することもできます 大文字と小文字の区別を無視して、大文字と小文字のみが異なる文字が互いに一致するようにします

$ sudo netstat -tulpn | grep -i 3306

とても簡単です。

詳細については、manページを参照してください。

$ man netstat

Netstatはほとんど廃止されています。 netstatの代わりに「ss」を使用します。

方法2-「ss」コマンドを使用する

ss ソケットを調査するためのコマンドラインユーティリティです。これはnetstatの代替であり、「ss」の使用法は「netstat」とほぼ同じです。 Ubuntuとそのバリアントにプリインストールされています。

どのサービスがどのポートでリッスンしているかを確認するには、次のコマンドを実行します。

$ sudo ss -tulpn

出力例:

Netid          State             Recv-Q            Send-Q                                            Local Address:Port                       Peer Address:Port                                                                                                                                                                                     
udp            UNCONN            0                 0                                                 127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=12))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.22%enp0s3:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=17))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.53%enp0s8:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=25))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:fe7e:8a9c]%enp0s8:546                                [::]:*               users:(("systemd-network",pid=653,fd=24))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:feff:d2e0]%enp0s3:546                                [::]:*               users:(("systemd-network",pid=653,fd=22))                                                                                                                                
tcp            LISTEN            0                 80                                                    127.0.0.1:3306                            0.0.0.0:*               users:(("mysqld",pid=1076,fd=32))                                                                                                                                        
tcp            LISTEN            0                 128                                               127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=13))                                                                                                                                
tcp            LISTEN            0                 128                                                     0.0.0.0:22                              0.0.0.0:*               users:(("sshd",pid=1015,fd=3))                                                                                                                                           
tcp            LISTEN            0                 128                                                           *:80                                    *:*               users:(("apache2",pid=1094,fd=4),("apache2",pid=1090,fd=4),("apache2",pid=1089,fd=4),("apache2",pid=1088,fd=4),("apache2",pid=1087,fd=4),("apache2",pid=1062,fd=4))      
tcp            LISTEN            0                 128                                                        [::]:22                                 [::]:*               users:(("sshd",pid=1015,fd=4))

特定のサービス(mysqldなど)の出力をフィルタリングするには、次を使用します。

$ sudo ss -tulpn | grep -w mysqld
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=1076,fd=32))

詳細については、manページを参照してください。

$ man ss

方法3-lsofを使用する

名前が示すように、 lsof は、すべてのアクティブなプロセスに属するすべての開いているファイルを一覧表示するコマンドラインユーティリティです。

Linuxにインストールするには、使用するディストリビューションの種類に応じて次のコマンドを使用します。

Arch Linuxの場合:

$ sudo pacman -S lsof

Debian、Ubuntuの場合:

$ sudo apt install lsof

CentOSでは、RHEL:

$ sudo yum install lsof

Fedoraの場合:

$ sudo dnf install lsof

どのプロセスがどのポートで実行されているかを確認するには、次のコマンドに示すようにポート番号を指定するだけです。

$ sudo lsof -i :80

サンプル出力:

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 1062     root    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1087 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1088 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1089 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1090 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1094 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)

詳細については、manページを参照してください。

$ man lsof

方法4-フューザーコマンドを使用する

フューザー ファイルまたはソケットを使用してプロセスを識別するためのさらに別のコマンドラインユーティリティです。指定したファイルまたはファイルシステムを使用しているプロセスのPIDを表示します。

ほとんどのLinuxディストリビューションのデフォルトのリポジトリでも利用できます。

Arch Linuxにインストールするには、次のコマンドを実行します:

$ sudo pacman -S psmisc

Debian、Ubuntuの場合:

$ sudo apt install psmisc

CentOSでは、RHEL:

$ sudo yum install psmisc

Fedoraの場合:

$ sudo dnf install psmisc

まず、特定のポートでリッスンしているサービスまたはプロセスのPIDを見つける必要があります。たとえば、次のコマンドを使用して、ポート3306でリッスンしているプロセスのPIDを検索します。

$ sudo fuser 3306/tcp

以下のような出力が表示されます。

3306/tcp: 1076

ここでは、 1076 はPIDです。

次に、コマンドを使用してPIDを使用して実際のプロセスを確認します。

$ ps -p 1076 -o comm=
mysqld

または、 -vを使用することもできます フラグを立てて、1つのコマンドで完全な詳細を表示します。

$ sudo fuser -v 3306/tcp
                     USER        PID ACCESS COMMAND
3306/tcp:            mysql      1076 F.... mysqld

詳細については、マニュアルページを参照してください。

$ man fuser

これで、どのプロセスがどのポートでリッスンしているかを見つけるための4つの異なるツールがわかりました。 4つすべてが使いやすく、ほとんどのLinuxディストリビューションで利用できます。他のツールをご存知の場合は、下のコメントセクションでお知らせください。それに応じてこのリストを確認して更新します。


Linux
  1. Linux –シリアルポートを使用してプロセスを見つける方法は?

  2. シェル - コマンドのディレクトリを見つける方法は?

  3. Linuxでどのタイムゾーンを確認する方法は?

  1. 特定のポートで実行されている rmiregistry を閉じるには?

  2. Linux の特定のポートで実行されているプロセスを強制終了するには?

  3. 特定のサービスが Ubuntu で実行されているかどうかを確認する方法

  1. 特定のプロセスの名前空間を見つける方法は?

  2. JavaがインストールされたフォルダでJavaのバージョンを見つける方法は?

  3. 特定のサイトで実行されているサーバー OS を確認するにはどうすればよいですか?