PR

SSH接続できない場合の確認ポイント5選

IT-Skills

サーバにSSH接続ができない場合に確認しておきたいポイントを5つ解説します。

Unix系サーバを対象としています

参考 SSH(Secure Shell)とは?

SSH接続ができない場合の確認ポイント
  • ポイント1 ネットワークの確認
  • ポイント2 SSHサーバの起動確認
  • ポイント3 SSHポートの確認
  • ポイント4 sshd_configファイルの確認
  • ポイント5 認証情報の確認

vpsを契約したばかりの人や、ネットワーク初心者には少し難しいかもしれませんが、確認方法(修正方法:コマンド付き)をわかりやすく解説します。

スポンサーリンク

SSH接続確認1:ネットワークの疎通確認(ping)

ネットワークの問題 確認方法: ping コマンドを使って、対象のサーバに到達可能か確認してください。

ping <サーバのIPアドレス>

参考 pingコマンドとは?(ICMPとは?)

もし疎通ができていれば以下のような結果になります。

C:\Users>ping 192.168.100.1

192.168.100.1 に ping を送信しています 32 バイトのデータ:
192.168.100.1 からの応答: バイト数 =32 時間 =18ms TTL=51
192.168.100.1 からの応答: バイト数 =32 時間 =31ms TTL=51
192.168.100.1 からの応答: バイト数 =32 時間 =31ms TTL=51
192.168.100.1 からの応答: バイト数 =32 時間 =37ms TTL=51

192.168.100.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 18ms、最大 = 37ms、平均 = 29ms

疎通に失敗していれば以下のような結果になります。

C:\Users>ping 192.168.100.1

192.168.100.1 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

192.168.100.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

疎通に成功した方は次へ。そうでない方は以下のポイントをチェックしてください。

pingが通らなかった場合に確認
  • 相手先のIPアドレスが正しいかどうかを確認する
    たとえば、相手先がDNS名で指定されている場合、DNSの設定が正しくない可能性があるため、IPアドレスに変換して確認する必要があります。
  • ネットワークの接続状態を確認する
    ケーブルが正しく接続されているか、Wi-Fiの接続が切れていないか、などを確認します。
  • ファイアウォールの設定を確認する
    ファイアウォールが、pingの応答を遮断している可能性があります。ファイアウォールの設定を確認して、pingのトラフィックを許可するように設定する必要があるかもしれません。
  • ルーターの設定を確認する
    ネットワーク上の別のネットワークからpingを送信しようとしている場合、ルーターの設定が適切でない場合、pingのトラフィックが遮断される可能性があります。ルーターの設定を確認して、pingのトラフィックを許可するように設定する必要があるかもしれません。
  • ローカルホストの設定を確認する
    ローカルホストでpingが通らない場合は、ローカルホストのネットワーク設定を確認する必要があります。たとえば、IPアドレスが正しく設定されているかどうか、ネットワークの設定が適切に行われているかどうかを確認します。

参考 DNS / IPアドレス / ファイアウォール

SSH接続確認2:SSHサーバの起動確認

SSHサーバ(SSHD)が起動しているかどうかを確認してください。

サーバに直接アクセスできる場合、以下のコマンドを実行してSSHサービスの状態を確認してください。

sudo systemctl status sshd

起動している場合は以下が表示されます。4行目の「active (running)」を確認。

$ sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-03-28 12:30:57 PDT; 2 days ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1080 (sshd)
   Memory: 3.2M
   CGroup: /system.slice/sshd.service
           └─1080 /usr/bin/sshd -D -e

Mar 28 12:30:57 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Mar 28 12:30:57 localhost.localdomain sshd[1080]: Server listening on 0.0.0.0 port 22.
Mar 28 12:30:57 localhost.localdomain sshd[1080]: Server listening on :: port 22.
Mar 28 12:30:57 localhost.localdomain systemd[1]: Started OpenSSH server daemon.

起動していない場合は以下が表示されます。4行目の「inactive (dead)」を確認してください。

$ sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:sshd(8)
           man:sshd_config(5)

対処方法→以下のコマンドを実行しSSHDを起動します。

sudo systemctl start sshd

SSH接続確認3:SSHポートの確認

SSHのポート番号が変更されている場合にSSH接続が失敗します。

参考 ポート番号とは?

/etc/ssh/sshd_config ファイルを開いて、Port の設定を確認してください。

# cat /etc/ssh/sshd_config | grep "^Port"
Port 10022

上記の例では、sshd_configファイルの中で、行の先頭に"Port"という文字列が含まれる行を検索しています。上記の検索結果は、SSHのポート番号として「10022」が利用されていることが分かります。

ポートが変更されている場合、SSH接続時に正しいポート番号を指定してください。

ssh -p <ポート番号> <ユーザ名>@<サーバのIPアドレス>

SSH接続確認4:sshd_configファイルの確認

sshd_configファイルは、SSHサーバー(sshd)の設定ファイルであり、SSHの動作や接続に関する様々な設定を変更できます。

sshd_configファイルの確認方法
sshd_configファイルは通常、/etc/ssh/sshd_configパスに保存されています。以下のコマンドで確認できます。

# cat /etc/ssh/sshd_config

特に以下の太字項目が想定通りであるかどうか?を確認してください。

設定項目説明
PortSSHサーバーがリッスンするポート番号を指定します(デフォルトは22)。
ProtocolSSHのバージョンを指定します(1と2の両方を使用可能)。
HostKeySSHサーバーの秘密鍵のファイルパスを指定します。
AllowUsersSSH接続を許可するユーザーのリストを指定します。
PasswordAuthenticationパスワードによる認証を許可するかどうかを指定します(yes/no)。
PermitRootLoginルートユーザーによるSSH接続を許可するかどうかを指定します(yes/no)。
PubkeyAuthentication公開鍵による認証を許可するかどうかを指定します(yes/no)。
X11ForwardingX11転送を許可するかどうかを指定します(yes/no)。
BannerSSHログイン前に表示されるメッセージを指定します。
UseDNSDNSリバースルックアップを行うかどうかを指定します(yes/no)。
MaxSessions同時に接続できるセッション数を指定します。
MaxAuthTries認証の試行回数の上限を指定します。
ClientAliveIntervalクライアントとの接続が有効であることを確認するための間隔を指定します。
ClientAliveCountMaxクライアントとの接続が途切れた場合に再試行する回数を指定します。
TCPKeepAliveTCP KeepAliveを有効にするかどうかを指定します(yes/no)。
AllowTcpForwardingTCPポート転送を許可するかどうかを指定します(yes/no)。
AllowAgentForwardingSSHエージェント転送を許可するかどうかを指定します(yes/no)。
CompressionSSHトラフィックの圧縮を有効にするかどうかを指定します(yes/no)。
LogLevelログレベルを指定します(QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3)。
sshd_config の説明

SSH接続確認5:認証情報の確認

それでもssh接続ができない場合は接続しようとしているユーザ名とパスワード、または鍵ペアが正しいかどうか確認してください。

案外このポイントで詰まっている場合も多いので改めて確認しましょう。

SSH接続ができない場合の確認ポイント
  • ポイント1 ネットワークの確認
  • ポイント2 SSHサーバの起動確認
  • ポイント3 SSHポートの確認
  • ポイント4 sshd_configファイルの確認
  • ポイント5 認証情報の確認
blank
インターネットのプロトコルTCP/IP入門書の決定版!

SSH接続に苦戦したあなたはネットワークの知識不足を痛感したかもしれません。

これを機に、ネットワーク全体についてもっと学びませんか?以下の記事では、初心者でも理解できるようにネットワークの世界を1からわかりやすく解説しています。さらなる知識を手に入れて、ネットワークのプロフェッショナルへの道を歩み始めましょう!こちらの記事をチェックしてみてください。

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