Linux で SSH サーバが実行中かどうかを確認する方法

LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、Linux システム上で SSH サーバーが動作しているかどうかを確認する方法を学びます。systemctl status ssh コマンドを使用してサービスの動作状態を確認し、ss -tuln コマンドを使用して SSH ポートが開いてリスニングしているかどうかを確認し、cat /etc/ssh/sshd_config コマンドを使用して SSH サーバーの設定ファイルを調べます。これらの手順は、SSH サーバーのトラブルシューティングと機能検証において基本的なものです。

systemctl status ssh で SSH サービスを確認する

このステップでは、Linux システム上の SSH サービスの状態を確認する方法を学びます。SSH (Secure Shell) は、リモートコンピュータに安全に接続するために使用されるプロトコルです。これはシステム管理と開発における基本的なツールです。

Linux では、SSH のようなサービスはしばしば systemd(システムおよびサービスマネージャ)によって管理されます。systemctl コマンドは、systemd とやり取りするために使用されます。

SSH サービスの状態を確認するには、systemctl status コマンドの後にサービス名である ssh を指定します。

ターミナルが開いていない場合は開きます。デスクトップの左側にある Xfce Terminal アイコンを見つけることができます。

ターミナルに以下のコマンドを入力し、Enter キーを押します。

systemctl status ssh

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

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: man:sshd(8)
             man:ssh(1)
   Main PID: ... (sshd)
      Tasks: 1 (limit: ...)
     Memory: ...
        CPU: ...
     CGroup: /system.slice/ssh.service
             └─... /usr/sbin/sshd -D

...

出力の重要な部分を分解してみましょう。

  • ● ssh.service: これはサービスの名前です。
  • Loaded: loaded (...): systemd によってサービスの設定ファイルが読み込まれたことを示します。
  • Active: active (running): これが最も重要な部分です。SSH サービスが現在実行中であることを示します。停止している場合は、inactive (dead) のような表示になります。
  • since ...: サービスが開始された時刻を示します。
  • Main PID: ... (sshd): メインの SSH デーモンプロセス (sshd) のプロセス ID です。

このコマンドは、ネットワーク接続の問題をトラブルシューティングしたり、サービスが期待通りに動作していることを確認したりするために不可欠です。

Continue をクリックして次のステップに進みます。

ss -tuln で SSH ポートを確認する

このステップでは、システム上でどのネットワークポートが開いてリスニングしているかを確認する方法を学びます。これは、SSH のようなサービスがどのようにアクセス可能かを理解するために重要です。

ss コマンドは、ソケットを調査するためのユーティリティです。ソケットは、ネットワークを介してデータを送受信するためのエンドポイントです。出力をフィルタリングするために、いくつかのオプションを使用して ss を実行します。

  • -t: TCP ソケットを表示します。SSH は TCP プロトコルを使用します。
  • -u: UDP ソケットを表示します。
  • -l: リスニングソケットを表示します。これらは、着信接続を待機しているソケットです。
  • -n: サービス名を解決しません。これにより、sshhttp のような名前ではなくポート番号が表示されます。

これらのオプションを組み合わせることで、数値で表されたすべてのリスニング TCP および UDP ポートを確認できます。

ターミナルに以下のコマンドを入力し、Enter キーを押します。

ss -tuln

様々なリスニングポートが一覧表示された出力が表示されます。通常ポート 22 でリスニングしている SSH に関連する行を探します。出力は次のようになる場合があります(正確な順序や他のポートは異なる場合があります)。

Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128            0.0.0.0:22          0.0.0.0:*
tcp    LISTEN  0       128               [::]:22             [::]:*
udp    UNCONN  0       0              127.0.0.53%lo:53          0.0.0.0:*
udp    UNCONN  0       0                    0.0.0.0:68          0.0.0.0:*

この出力において:

  • Netid: ネットワークプロトコル(tcp または udp)。
  • State: ソケットの状態(LISTEN は接続を待機していることを意味します)。
  • Local Address:Port: サービスがリスニングしているローカルの IP アドレスとポート番号。0.0.0.0 はすべての利用可能な IPv4 アドレスでリスニングしていることを意味し、[::] はすべての利用可能な IPv6 アドレスでリスニングしていることを意味します。
  • Peer Address:Port: リモート接続のアドレスとポート(リスニングソケットの場合は *)。

TCP ポート 22 が LISTEN 状態であることを示す行が表示されるはずです。これにより、SSH サービスが実行中であり、標準の SSH ポートで接続を受け入れる準備ができていることが確認されます。

開いているポートを確認する方法を理解することは、ネットワークのトラブルシューティングとセキュリティにおける基本的なスキルです。

Continue をクリックして次のステップに進みます。

cat /etc/ssh/sshd_config で SSH 設定を確認する

この最後のステップでは、SSH サーバの主要な設定ファイルを調べます。このファイルには、SSH サービスの動作を制御する設定が含まれています。たとえば、どのポートでリスニングするか、どのユーザが接続できるか、セキュリティオプションなどです。

SSH デーモン (sshd) の設定ファイルは通常、/etc/ssh/sshd_config にあります。/etc ディレクトリは、システムの設定ファイルが保存される場所です。

このファイルの内容を表示するには、cat コマンドを使用できます。cat は、ファイルを順番に読み取り、標準出力(ターミナル)に出力する単純なコマンドです。

ターミナルに以下のコマンドを入力し、Enter キーを押します。

cat /etc/ssh/sshd_config

sshd_config ファイルの全内容がターミナルに表示されます。出力には多くの行が含まれ、一部は # で始まり(これはコメントで、システムによって無視されます)、他の行は設定オプションを定義しています。

コメントアウトされていない行(# で始まらない行)を探します。見つかる重要なディレクティブには以下のようなものがあります。

  • Port 22: これは SSH サーバがリスニングするポートを指定します。デフォルトでは 22 です。
  • ListenAddress 0.0.0.0: サーバがリスニングする IPv4 アドレスを指定します。
  • ListenAddress ::: サーバがリスニングする IPv6 アドレスを指定します。
  • PermitRootLogin prohibit-password: root ユーザが SSH で直接ログインできるかどうかを制御します。
  • PasswordAuthentication yes: パスワード認証が許可されているかどうかを制御します。
## This is the sshd server system configuration file.
## See sshd_config(5) for more information.

## The systemd service file for sshd uses EnvironmentFile to load
## the SSHD_CONFIG environment variable, setting this to /etc/ssh/sshd_config.
## ...

Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

## Ciphers and keying
#...

## Authentication:
LoginGraceTime 2m
PermitRootLogin prohibit-password
StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

## Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#IgnoreRhosts yes
#RhostsRSAAuthentication no
#HostbasedAuthentication no
#...

PasswordAuthentication yes
#PermitEmptyPasswords no

ChallengeResponseAuthentication no

#...

このような設定ファイルを読むことは、Linux サービスを理解し管理するための重要なスキルです。この実験ではファイルを変更しませんが、ファイルの場所と内容を表示する方法を知っておくと非常に便利です。

これで、SSH サービスの状態を確認し、リスニングポートを検証し、設定ファイルを調べることができました。サービス管理とネットワーク検査に関する基本的な Linux コマンドの貴重な経験を積むことができました。

Continue をクリックして実験を完了し、進捗状況を確認しましょう!

まとめ

この実験では、Linux システム上で SSH サーバが実行中かどうかを確認する方法を学びました。systemctl status ssh コマンドを使用して、サービスのアクティブ状態を確認し、ロード状態、アクティブ状態、プロセス ID などの重要な詳細を理解しました。このコマンドは、SSH サービスが正常に動作していることを確認するために重要です。

また、ss -tuln コマンドを使用して SSH ポートを確認し、cat コマンドを使用して /etc/ssh/sshd_config にある SSH 設定ファイルを調べる方法も学びました。これらの手順により、SSH サーバのネットワーク設定と構成についてさらに深く理解することができます。