journalctlでSSH障害を調査する方法|ログから原因を特定する実践テクニック

journalctlでSSH障害を調査する方法

journalctlを使ってSSH障害を調査する方法を理解しよう

SSH接続に失敗した場合、多くの管理者はまずクライアント側のエラーメッセージを確認します。

しかし本当に重要なのはサーバ側ログです。

SSHサーバ(sshd)は接続状況や認証結果を詳細に記録しており、ログを確認することで原因を特定できるケースが非常に多くあります。

近年のAlmaLinux、Rocky Linux、RHELなどではsystemdが採用されており、journalctlコマンドを利用してログを確認するのが一般的です。

本記事ではjournalctlを利用したSSH障害の調査方法について解説します。

journalctlとは何か

journalctlはsystemd-journaldが保存するログを閲覧するためのコマンドです。

従来のsyslogやrsyslogとは異なり、systemd環境で標準的に利用されています。

Linuxサーバ管理者にとって必須のコマンドの一つです。

なぜSSH障害調査に重要なのか

SSHクライアント側のエラーメッセージだけでは原因が分からないことがあります。

例えば以下です。

Permission denied

これだけでは認証失敗の詳細が分かりません。

サーバログを見ることで具体的な原因を確認できます。

SSHサービスログを確認する

最も基本的な確認方法です。

journalctl -u sshd# 

sshdサービスのログが表示されます。

最新ログだけ表示する

# journalctl -u sshd -n 50

直近50行のみ表示します。

トラブル調査でよく利用します。

リアルタイム監視

接続試験を行いながら確認できます。

# journalctl -u sshd -f

非常に便利なオプションです。

接続成功時のログ例

Accepted publickey for user
from 192.168.1.100

公開鍵認証成功を意味します。

パスワード認証成功例

Accepted password for user

パスワード認証でログインしています。

認証失敗例

Failed password for user

パスワード認証失敗です。

公開鍵認証失敗例

Failed publickey for user

公開鍵認証に失敗しています。

authorized_keysなどを確認します。

Permission denied調査

以下のエラー発生時です。

Permission denied (publickey)

journalctlを見ることで認証失敗理由が分かります。

不正アクセス確認

SSHへの攻撃も確認できます。

Invalid user admin

存在しないユーザーへの攻撃です。

総当たり攻撃の例

Failed password
Failed password
Failed password

短時間で大量発生している場合はブルートフォース攻撃の可能性があります。

特定期間だけ表示する

今日のログです。

# journalctl -u sshd --since today

調査範囲を絞れます。

時間指定する

# journalctl -u sshd  --since "2026-06-16 10:00"

障害発生時刻周辺を調査できます。

終了時刻も指定する

# journalctl -u sshd --since "10:00" --until "11:00"

特定時間帯だけ表示できます。

今日の接続履歴確認

ログイン状況の確認にも利用できます。

運用監査でも活用されます。

ユーザー名で検索する

grepを組み合わせます。

# journalctl -u sshd | grep user

特定ユーザーの接続履歴を確認できます。

IPアドレスで検索する

# journalctl -u sshd | grep 192.168.1.100

接続元の追跡が可能です。

sshd起動エラー調査

設定ミス時によく利用します。

# journalctl -xe

詳細エラーを確認できます。

sshd起動失敗例

Failed to start OpenSSH
server daemon

設定ファイルの誤りなどが考えられます。

設定変更後の確認

設定変更後は以下を確認します。

# sshd -t

その後journalctlを確認します。

SSH切断調査

途中で接続が切れる場合にも利用できます。

切断時刻付近のログを確認します。

ポート変更時の調査

SSHポートを変更した場合です。

Port 2222

sshd起動状況やエラー内容を確認できます。

SELinux関連調査

SELinuxが原因の場合もあります。

journalctlだけではなく以下も確認します。

# ausearch -m AVC

拒否ログを確認できます。

firewalldとの組み合わせ

接続できない場合は以下も確認します。

# journalctl -u firewalld

ファイアウォール関連の変更履歴を確認できます。

ログ保存の注意点

環境によってはログ保存期間が限られています。

障害発生後は早めに確認しましょう。

従来のログファイルとの違い

従来は以下を確認していました。

/var/log/secure

現在でも利用される場合があります。

ただしsystemd環境ではjournalctlが基本です。

実務でよく使うコマンド

# journalctl -u sshd

# journalctl -u sshd -f

# journalctl -u sshd -n 100

まずはこの3つを覚えましょう。

実務での調査手順

  1. ssh -vvv実行
  2. journalctl -u sshd確認
  3. 認証失敗内容確認
  4. sshd_config確認
  5. SELinux確認
  6. firewalld確認

効率的に原因を特定できます。

よくある原因

  • 公開鍵認証失敗
  • ユーザー名間違い
  • authorized_keys不備
  • 権限設定ミス
  • SELinux制限
  • firewalld設定ミス

ログから確認できます。

まとめ

journalctlはSSH障害調査において非常に重要なツールです。

クライアント側のエラーメッセージだけでは分からない認証失敗や設定ミスを詳細に確認できます。

特にjournalctl -u sshdとjournalctl -u sshd -fは実務で頻繁に利用されるため、確実に使えるようにしておきましょう。

SSHトラブル発生時は、まずサーバログを確認する習慣を身につけることが重要です。