AlmaLinuxでOpenSSHバージョンを確認する方法|セキュリティ管理の基本

Web

AlmaLinuxでサーバーを管理していると、「OpenSSHのバージョンって何だろう?」と確認したくなる場面がありますよね。

特に:

  • セキュリティ脆弱性の対象バージョンか確認したい
  • アップデートが必要か判断したい
  • システムの構成情報をドキュメント化したい
  • トラブルシューティングで情報が必要

こうした場面で、OpenSSHのバージョンを素早く確認する方法を知っておくと便利です。

OpenSSHは、リモートログインやファイル転送に使われる重要なソフトウェア

セキュリティに直結するため、バージョン情報の確認は管理者の基本スキルなんですね。

この記事では、AlmaLinuxでOpenSSHのバージョンを確認する様々な方法を、初心者の方にも分かりやすく解説していきます。

コマンドラインでの確認方法を中心に、詳しく説明していきますよ。

スポンサーリンク
  1. OpenSSHとは?基本を理解しよう
    1. OpenSSH(オープンエスエスエイチ)の役割
    2. クライアントとサーバー
    3. なぜバージョン確認が重要?
  2. 方法1:ssh -Vコマンドで確認(最も基本)
    1. OpenSSH Clientのバージョン確認
    2. バージョン番号の読み方
    3. 注意点
    4. 大文字のVを使う理由
  3. 方法2:sshd -Vでサーバーバージョン確認
    1. sshdのバージョン確認コマンド
    2. root権限が必要な場合
    3. より確実な方法
  4. 方法3:パッケージ情報で確認
    1. dnfコマンドで確認
    2. 詳細情報の表示
    3. rpmコマンドで確認
    4. 特定パッケージのバージョン
  5. 方法4:実行ファイルの情報を確認
    1. stringsコマンドで確認
    2. サーバーバイナリの確認
    3. whichコマンドで場所を確認
  6. 方法5:systemctlでサービス情報を確認
    1. サービスの状態確認
    2. プロセス情報の確認
  7. 方法6:接続時のバナーで確認
    1. SSHバナーの取得
    2. ncコマンドで確認
    3. セキュリティ上の注意
  8. OpenSSLのバージョンも確認
    1. OpenSSLのバージョン確認
    2. 詳細情報の表示
    3. なぜOpenSSLも重要?
  9. セキュリティアップデートの確認
    1. 利用可能なアップデートの確認
    2. セキュリティアップデートの確認
    3. アップデート方法
    4. アップデート後の確認
  10. バージョン情報のログ出力
    1. バージョン情報をファイルに保存
    2. システム情報の一括取得
    3. 定期的な記録
  11. トラブルシューティング
    1. 問題1:「command not found」エラー
    2. 問題2:sshd -Vがエラーになる
    3. 問題3:バージョンが古すぎる
    4. 問題4:クライアントとサーバーのバージョンが違う
    5. 問題5:バージョン確認コマンドが遅い
  12. セキュリティベストプラクティス
    1. 定期的なバージョンチェック
    2. セキュリティ情報の購読
    3. 脆弱性データベースの確認
    4. バージョン情報の非表示
    5. ログの監視
  13. まとめ:定期的なバージョン確認でセキュリティを保つ

OpenSSHとは?基本を理解しよう

まずは、OpenSSHについて基本を押さえておきましょう。

OpenSSH(オープンエスエスエイチ)の役割

OpenSSHは、Secure Shell(セキュアシェル)プロトコルの実装です。

主な用途:

  • リモートログイン:別のコンピュータに安全に接続
  • ファイル転送:SCPやSFTPでファイルをやり取り
  • ポート転送:トンネリングでセキュアな通信
  • 鍵認証:パスワードなしで安全にログイン

Linuxサーバーの管理には欠かせないツールですね。

クライアントとサーバー

OpenSSHには2つの役割があります。

OpenSSH Client(クライアント)

  • 他のサーバーに接続する
  • sshコマンドを実行する
  • 通常、デフォルトでインストール済み

OpenSSH Server(サーバー)

  • 他のコンピュータからの接続を受け付ける
  • sshdデーモンが動作
  • サーバー用途では必須

どちらのバージョンを確認したいかで、方法が少し変わってきます。

なぜバージョン確認が重要?

OpenSSHのバージョン確認が重要な理由:

1. セキュリティ脆弱性の確認

古いバージョンには既知の脆弱性があることも。

定期的にバージョンを確認して、最新版にアップデートすることが推奨されます。

2. 機能の互換性確認

新しい機能や暗号化方式は、特定バージョン以降でしか使えません。

バージョンを知っておくことで、使える機能が分かります。

3. トラブルシューティング

問題が発生した時、バージョン情報は重要なヒントになります。

既知のバグかどうか、調査の手がかりになるんですね。

4. システムドキュメント

サーバーの構成情報として、バージョンを記録しておくのはベストプラクティスです。

方法1:ssh -Vコマンドで確認(最も基本)

最も簡単で素早い確認方法です。

OpenSSH Clientのバージョン確認

ターミナルで以下のコマンドを実行します:

ssh -V

出力例:

OpenSSH_8.7p1, OpenSSL 3.0.7 1 Nov 2022

この出力から分かる情報:

  • OpenSSHバージョン:8.7p1
  • OpenSSLバージョン:3.0.7(暗号化ライブラリ)
  • OpenSSLのリリース日:2022年11月1日

バージョン番号の読み方

OpenSSH_8.7p1の意味:

  • 8:メジャーバージョン(大きな変更)
  • 7:マイナーバージョン(機能追加)
  • p1:パッチレベル(バグ修正)

pの後の数字が大きいほど、セキュリティ修正が適用されています。

注意点

ssh -Vで確認できるのは、クライアント側のバージョンです。

サーバー側(sshd)のバージョンとは異なる場合があるので注意しましょう。

大文字のVを使う理由

小文字の-vは「verbose(詳細表示)」モードなので、別の動作になります。

バージョン確認は必ず大文字の-Vを使ってください。

方法2:sshd -Vでサーバーバージョン確認

OpenSSHサーバー(sshd)のバージョンを確認する方法です。

sshdのバージョン確認コマンド

sshd -V

出力例:

unknown option -- V
OpenSSH_8.7p1, OpenSSL 3.0.7 1 Nov 2022
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
...(以下、使用方法の説明)

実は、sshd -Vは正式なオプションではありません。

エラーとともにバージョンが表示される仕様なんですね。

root権限が必要な場合

環境によっては、sudoが必要かもしれません:

sudo sshd -V

より確実な方法

sshdコマンドが見つからない場合や、別の方法を試したい場合:

/usr/sbin/sshd -V

フルパスで指定すると確実です。

方法3:パッケージ情報で確認

パッケージ管理システムから確認する方法です。

dnfコマンドで確認

AlmaLinuxでは、dnfコマンドでパッケージ情報を確認できます。

インストール済みバージョンの確認:

dnf list installed | grep openssh

出力例:

openssh.x86_64                    8.7p1-8.el9                    @baseos
openssh-clients.x86_64            8.7p1-8.el9                    @baseos
openssh-server.x86_64             8.7p1-8.el9                    @baseos

この出力から分かる情報:

  • openssh:基本パッケージ
  • openssh-clients:クライアントツール
  • openssh-server:サーバーデーモン
  • 8.7p1-8.el9:バージョンとリリース情報
  • @baseos:インストール元のリポジトリ

詳細情報の表示

特定のパッケージの詳細を確認:

dnf info openssh

出力例:

インストール済みパッケージ
名前         : openssh
バージョン   : 8.7p1
リリース     : 8.el9
アーキテクチャ: x86_64
サイズ       : 1.8 M
ソース       : openssh-8.7p1-8.el9.src.rpm
リポジトリー : @System
リポジトリーより: baseos
要約         : An open source implementation of SSH protocol version 2

より詳しい情報が表示されます。

rpmコマンドで確認

低レベルなパッケージ情報を確認:

rpm -qa | grep openssh

出力例:

openssh-8.7p1-8.el9.x86_64
openssh-clients-8.7p1-8.el9.x86_64
openssh-server-8.7p1-8.el9.x86_64

特定パッケージのバージョン

rpm -q openssh-server

出力例:

openssh-server-8.7p1-8.el9.x86_64

サーバーパッケージのバージョンがピンポイントで分かります。

方法4:実行ファイルの情報を確認

実行ファイル自体から情報を取得する方法です。

stringsコマンドで確認

strings /usr/bin/ssh | grep OpenSSH

出力例:

OpenSSH_8.7p1

バイナリファイルから文字列を抽出してバージョンを確認します。

サーバーバイナリの確認

strings /usr/sbin/sshd | grep OpenSSH

sshdのバイナリからも同様に確認できます。

whichコマンドで場所を確認

実行ファイルの場所が分からない場合:

which ssh
which sshd

出力例:

/usr/bin/ssh
/usr/sbin/sshd

パスを確認してから、stringsコマンドを実行できます。

方法5:systemctlでサービス情報を確認

sshdサービスの情報から確認する方法です。

サービスの状態確認

systemctl status sshd

出力例:

● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-01-15 10:30:22 JST; 2 days ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1234 (sshd)
      Tasks: 1 (limit: 23456)
     Memory: 2.5M
        CPU: 1.234s
     CGroup: /system.slice/sshd.service
             └─1234 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

直接的なバージョン情報は表示されませんが、サービスが動作しているか確認できます。

プロセス情報の確認

ps aux | grep sshd

出力例:

root     1234  0.0  0.1 123456  7890 ?   Ss   10:30   0:01 sshd: /usr/sbin/sshd -D [listener]

実行中のsshdプロセスを確認できます。

方法6:接続時のバナーで確認

リモートからサーバーのバージョンを確認する方法です。

SSHバナーの取得

ssh -v localhost 2>&1 | grep "SSH-"

または

telnet localhost 22

出力例:

Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.7

サーバーが応答するSSHプロトコルのバージョンが表示されます。

ncコマンドで確認

nc localhost 22

または

echo "" | nc localhost 22

シンプルにバナーを取得できます。

セキュリティ上の注意

デフォルトでは、接続時にバージョン情報が表示されます。

セキュリティ上、バージョンを隠したい場合は、/etc/ssh/sshd_configで設定変更が可能です。

OpenSSLのバージョンも確認

OpenSSHと一緒に使われるOpenSSLのバージョン確認も重要です。

OpenSSLのバージョン確認

openssl version

出力例:

OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)

詳細情報の表示

openssl version -a

出力例:

OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
built on: Thu Nov  3 15:00:00 2022 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall ...
OPENSSLDIR: "/etc/pki/tls"
ENGINESDIR: "/usr/lib64/engines-3"
MODULESDIR: "/usr/lib64/ossl-modules"

より詳細な情報が表示されます。

なぜOpenSSLも重要?

OpenSSHは、暗号化処理をOpenSSLに依存しています。

OpenSSLに脆弱性がある場合、OpenSSHも影響を受けるため、両方のバージョン管理が必要なんです。

セキュリティアップデートの確認

バージョン確認後、アップデートが必要か判断しましょう。

利用可能なアップデートの確認

dnf check-update openssh openssh-server openssh-clients

出力例(アップデートがある場合):

openssh.x86_64           8.7p1-10.el9           baseos
openssh-clients.x86_64   8.7p1-10.el9           baseos
openssh-server.x86_64    8.7p1-10.el9           baseos

新しいバージョンが利用可能な場合、表示されます。

出力なし(最新の場合):

何も表示されなければ、既に最新版です。

セキュリティアップデートの確認

dnf updateinfo list security

セキュリティ関連のアップデートのみを確認できます。

アップデート方法

アップデートが必要な場合:

sudo dnf update openssh openssh-server openssh-clients

または、システム全体をアップデート:

sudo dnf update

アップデート後の確認

アップデート後は、必ずバージョンを再確認:

ssh -V

sshdサービスの再起動も忘れずに:

sudo systemctl restart sshd

バージョン情報のログ出力

システム管理のため、情報を記録しておきましょう。

バージョン情報をファイルに保存

ssh -V 2>&1 | tee ~/openssh_version.txt

2>&1はエラー出力を標準出力にリダイレクト(ssh -Vは標準エラー出力に出力されるため)。

システム情報の一括取得

cat << EOF > ~/system_info.txt
=== OpenSSH Version ===
$(ssh -V 2>&1)

=== OpenSSH Packages ===
$(rpm -qa | grep openssh)

=== OpenSSL Version ===
$(openssl version)

=== SSHD Status ===
$(systemctl status sshd --no-pager)
EOF

複数の情報をまとめて1つのファイルに保存できます。

定期的な記録

システム変更時には、必ずバージョン情報を記録する習慣をつけましょう。

トラブルシューティング

バージョン確認時によくある問題と解決方法です。

問題1:「command not found」エラー

原因:
OpenSSHがインストールされていません。

解決方法:

# インストール状況確認
rpm -qa | grep openssh

# インストールされていない場合
sudo dnf install openssh openssh-clients openssh-server

問題2:sshd -Vがエラーになる

原因:
sshdコマンドへのパスが通っていないか、権限がありません。

解決方法:

# フルパスで実行
/usr/sbin/sshd -V

# またはroot権限で
sudo sshd -V

問題3:バージョンが古すぎる

原因:
長期間アップデートしていません。

解決方法:

# アップデート可能なバージョン確認
dnf list available openssh

# アップデート実行
sudo dnf update openssh openssh-server openssh-clients

# サービス再起動
sudo systemctl restart sshd

問題4:クライアントとサーバーのバージョンが違う

原因:
パッケージが個別に更新されている可能性があります。

解決方法:

# すべてのOpenSSH関連パッケージを同時に更新
sudo dnf update openssh*

# インストール済みバージョンの確認
rpm -qa | grep openssh

問題5:バージョン確認コマンドが遅い

原因:
DNSの逆引きなどで時間がかかっている可能性があります。

解決方法:

ssh -Vやsshd -Vは通常高速です。

もし遅い場合は、ネットワーク設定やDNS設定を確認してください。

セキュリティベストプラクティス

バージョン管理に関するセキュリティ上の推奨事項です。

定期的なバージョンチェック

月次または週次でバージョンを確認:

ssh -V
dnf check-update openssh

セキュリティアップデートを見逃さないようにしましょう。

セキュリティ情報の購読

AlmaLinuxのセキュリティメーリングリストや、OpenSSHのセキュリティアナウンスを購読します。

重大な脆弱性が発見された時、迅速に対応できます。

脆弱性データベースの確認

既知の脆弱性を確認:

CVE(Common Vulnerabilities and Exposures)データベースで、自分の使用バージョンに該当する脆弱性がないかチェックします。

バージョン情報の非表示

本番環境では、SSHバナーでバージョン情報を隠すことも検討しましょう。

/etc/ssh/sshd_config

# バナーの変更(バージョン非表示)
Banner /etc/ssh/banner.txt

ただし、セキュリティ対策としては「隠すこと」より「最新版を使うこと」が重要です。

ログの監視

SSH接続ログを定期的に確認:

sudo tail -f /var/log/secure

不審なアクセスがないかチェックしましょう。

まとめ:定期的なバージョン確認でセキュリティを保つ

AlmaLinuxでOpenSSHバージョンを確認する方法をまとめます。

主な確認方法:

1. ssh -V(最も簡単)

ssh -V
  • クライアント側のバージョン
  • 最も素早く確認できる

2. sshd -V

sshd -V
  • サーバー側のバージョン
  • エラーとともに表示される

3. パッケージ情報

dnf list installed | grep openssh
rpm -qa | grep openssh
  • インストール済みパッケージ情報
  • リリース番号も確認できる

4. 詳細情報

dnf info openssh
  • パッケージの詳細情報
  • リポジトリ情報も分かる

確認すべき項目:

  • OpenSSHのバージョン
  • OpenSSLのバージョン
  • パッチレベル
  • 利用可能なアップデート

関連コマンド:

  • openssl version:OpenSSLバージョン
  • dnf check-update openssh:アップデート確認
  • systemctl status sshd:サービス状態

バージョン番号の見方:

  • OpenSSH_8.7p1 = バージョン8.7、パッチレベル1
  • メジャー.マイナーp(パッチ)

セキュリティ管理:

  • 定期的なバージョンチェック
  • セキュリティアップデートの適用
  • 脆弱性情報の確認
  • ログの監視

アップデート方法:

sudo dnf update openssh openssh-server openssh-clients
sudo systemctl restart sshd

重要なポイント:

  • OpenSSHは頻繁に脆弱性が発見される
  • 古いバージョンの使用は危険
  • 定期的なアップデートが必須
  • バージョン情報はドキュメント化

OpenSSHのバージョン確認は、サーバー管理者の基本スキルです。

セキュリティに直結する重要なソフトウェアなので、常に最新の状態に保つことが推奨されます。

この記事で紹介したコマンドを使って、定期的にバージョンをチェックし、必要に応じてアップデートを実行しましょう。

特に、セキュリティ脆弱性が公開された時は、速やかにバージョンを確認して、影響があるか判断することが大切です。

サーバーのセキュリティを保つため、OpenSSHのバージョン管理を習慣化してくださいね!

コメント

タイトルとURLをコピーしました