サーバーで通信しているポート番号を確認する必要があったので、確認方法をメモ。
結論からいうと、次のコマンドで確認できます。
※環境はAWSのAmazon Linux 2です。
$ sudo lsof -i -n -P
実行結果は次の通りになります。
![](https://m-kenomemo.com/wp/wp-content/uploads/2021/03/m-kenomemo02010313.png)
意味 | 備考 | |
-i | IPソケットをリストする | ネットワークに接続しているプログラムを表示する(TCPとUDPが表示される) |
-n | 名前解決しない | オプション有)10.0.1.10 オプション無)ip-10-0-1-10.ap-northeast-1.compute.interna |
-P | ポート番号を解決しない | オプション有)TCP *:22 オプション無)TCP *:ssh |
lsofコマンドはサーバーで実行しているプロセス(プログラム)を確認します。
確認方法ですが、SSHを例に見てみます。SSHはリモートからコマンド操作を可能にするプログラムです。
SSH接続だけを表示させるにはオプション「-i」にポート番号22を追加します。
$ sudo lsof -i :22 -n -P
![](https://m-kenomemo.com/wp/wp-content/uploads/2021/03/m-kenomemo20210313.png)
各行の末尾に「LISTEN」、「ESTABLISHED」とあります。これはポートの通信状態を表すものです。
LISTEN | 待受中 |
ESTABLISHED | 通信中 |
(LISTEN)はターミナルからのSSH接続を待ち受けている状態。それぞれIPv4とIPv6での通信を待ち受けています。
![](https://m-kenomemo.com/wp/wp-content/uploads/2021/03/m-kenomemo02010322.jpg)
(ESTABLISHED)は、現在通信しているSSHの状態を表します。Macの場合、ターミナルからSSHでサーバーに接続しますが、まさにその通信を表しています。
![](https://m-kenomemo.com/wp/wp-content/uploads/2021/03/m-kenomemo02010325.jpg)
一番下の行、ユーザー名「ec2-user」とありますが、これはAWSが用意しているユーザーアカウントです。
ec2-userがクライアント側、その上のrootがサーバー側と思われます。
lsofコマンドは時々使うのによく忘れるので、改めてメモしておきます。
こちらの記事でもポートについてまとめてます。