サーバーで通信しているポート番号を確認する必要があったので、確認方法をメモ。
結論からいうと、次のコマンドで確認できます。
※環境はAWSのAmazon Linux 2です。
$ sudo lsof -i -n -P
実行結果は次の通りになります。
意味 | 備考 | |
-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
各行の末尾に「LISTEN」、「ESTABLISHED」とあります。これはポートの通信状態を表すものです。
LISTEN | 待受中 |
ESTABLISHED | 通信中 |
(LISTEN)はターミナルからのSSH接続を待ち受けている状態。それぞれIPv4とIPv6での通信を待ち受けています。
(ESTABLISHED)は、現在通信しているSSHの状態を表します。Macの場合、ターミナルからSSHでサーバーに接続しますが、まさにその通信を表しています。
一番下の行、ユーザー名「ec2-user」とありますが、これはAWSが用意しているユーザーアカウントです。
ec2-userがクライアント側、その上のrootがサーバー側と思われます。
lsofコマンドは時々使うのによく忘れるので、改めてメモしておきます。
こちらの記事でもポートについてまとめてます。