実務でよくあるSSHトラブル集|現場で頻発する障害と対処方法まとめ

実務でよくあるSSHトラブル集

実務でよくあるSSHトラブルと対処方法をまとめて理解しよう

SSHはLinuxサーバ管理において最も利用されるリモートアクセス手段です。

しかし実際の運用現場では、さまざまなトラブルが発生します。

SSHが利用できなくなるとサーバ管理そのものが困難になるため、迅速な原因特定と復旧が求められます。

本記事では、実務で特によく遭遇するSSHトラブルと、その確認ポイントや対処方法についてまとめて解説します。

まず確認するべき基本項目

SSH接続できない場合は、以下の順番で確認すると効率的です。

  1. ネットワーク疎通
  2. sshd起動確認
  3. ポート待受確認
  4. firewalld確認
  5. SELinux確認
  6. 認証設定確認
  7. ログ確認

この流れを覚えておくと多くの問題を解決できます。

トラブル1 SSH接続できない

最も多い障害です。

典型的なエラーです。

Connection timed out

まずはネットワーク疎通を確認します。
$ ping server

または
$ nc -zv server 22

トラブル2 Connection refused

SSHサービスが停止している可能性があります。

Connection refused

確認します。
# systemctl status sshd

停止していれば起動します。
# systemctl start sshd

トラブル3 Permission denied (publickey)

公開鍵認証失敗です。

Permission denied (publickey)

以下を確認します。

  • authorized_keys
  • ファイル権限
  • 秘密鍵
  • ユーザー名

まずはデバッグ表示を利用しましょう。

$ ssh -vvv user@server

トラブル4 Host key verification failed

ホスト鍵不一致です。

Host key verification failed

サーバ再構築後によく発生します。

削除します。
# ssh-keygen -R server

トラブル5 known_hostsエラー

ホスト鍵変更時によく発生します。

VirtualBoxやクラウド環境で頻繁に見られます。

原因確認後に該当エントリを削除します。

トラブル6 SSHポート変更後に接続できない

非常に多いミスです。

例えば以下です。

Port 2222

変更後は以下も必要です。

  • firewalld設定
  • SELinux設定
  • クラウドFW設定

トラブル7 firewalldによる通信遮断

SSHサービスが許可されていない場合です。

# firewall-cmd --list-services

sshが無ければ追加します。
# firewall-cmd --add-service=ssh

トラブル8 SELinuxによる制限

設定変更後によく発生します。

状態確認です。
# getenforce

ログも確認します。
# ausearch -m AVC

トラブル9 SSHログインが極端に遅い

実務で非常に多い問題です。

主な原因は以下です。

  • 逆引きDNS
  • UseDNS
  • GSSAPI
  • LDAP認証

まず確認します。

$ ssh -vvv user@server

トラブル10 SSH接続が途中で切断される

長時間作業中によく発生します。

主な原因です。

  • NATタイムアウト
  • VPN切断
  • KeepAlive未設定

以下を設定します。

ServerAliveInterval 60

トラブル11 authorized_keysの権限不備

非常に多い原因です。

権限を修正します。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

トラブル12 ホームディレクトリ権限不備

公開鍵認証へ影響します。

$ chown user:user ~

所有者も確認しましょう。

トラブル13 SSH鍵を間違えている

複数鍵を管理している環境で発生します。

利用鍵を確認します。

$ ssh -vvv user@server

トラブル14 ssh-agent問題

誤った鍵が利用されることがあります。

確認します。

ssh-add -l

トラブル15 rootログインできない

正常な動作の場合があります。

設定確認です。

PermitRootLogin no

セキュリティ対策として設定されることがあります。

トラブル16 ユーザー制限に引っかかる

以下の設定を確認します。

AllowUsers
AllowGroups
DenyUsers

アクセス制限が原因の場合があります。

トラブル17 SSH総当たり攻撃

公開サーバでは日常的に発生します。

ログ確認です。

# journalctl -u sshd

Fail2ban導入も検討しましょう。

トラブル18 Fail2banによるブロック

管理者自身がブロックされる場合があります。

状態確認です。

# fail2ban-client status sshd

トラブル19 ProxyJump接続失敗

踏み台サーバ構成で発生します。

デバッグ表示で確認します。

$ ssh -vvv target

トラブル20 ポートフォワーディング失敗

トンネリング利用時の問題です。

確認項目です。

  • AllowTcpForwarding
  • GatewayPorts
  • firewalld

トラブル21 SCP・SFTPだけ失敗する

SSHは接続できるのに転送だけ失敗するケースです。

SFTPサブシステムを確認します。

Subsystem sftp

トラブル22 SSH設定ミス

sshd_config編集後に発生します。

反映前に確認します。

# sshd -t

必須の確認作業です。

トラブル23 クラウドFW設定ミス

AWSやAzureで非常に多い問題です。

  • AWS Security Group
  • Azure NSG
  • GCP Firewall

OS側だけではありません。

トラブル24 ログを確認していない

実務で意外と多いケースです。

まずログを確認しましょう。

# journalctl -u sshd

原因特定への近道です。

SSH障害調査で必須のコマンド

# ssh -vvv user@server

# systemctl status sshd

# ss -antlp | grep sshd

# journalctl -u sshd

# firewall-cmd --list-all

まずはこれらを覚えておきましょう。

実務でおすすめの調査手順

  1. ping確認
  2. ポート疎通確認
  3. sshd確認
  4. firewalld確認
  5. SELinux確認
  6. ssh -vvv実行
  7. journalctl確認

この順番なら効率よく切り分けできます。

まとめ

SSHトラブルは一見すると複雑に見えますが、多くの場合は原因がパターン化されています。

特に公開鍵認証、firewalld、SELinux、DNS、known_hosts関連は頻繁に発生するため、調査手順を覚えておくことが重要です。

また、ssh -vvvとjournalctl -u sshdはSSH障害調査の基本ツールです。

これらを活用して効率的に問題を切り分けられるようになれば、実務でのSSH運用に大きく役立つでしょう。