Secure Shell(SSH)は主要なWordPress開発ツールです。SSHを使用すると、上級ユーザーは、コーディング等の作業をより簡単に、より速く、より整理されたものにする主要なプラットフォームやソフトウェアにアクセスできます。

したがって、SSHを使用しようとするときに「接続拒否」というエラーが表示されると、不安かもしれません。ただし、これはよくある問題であり、ほんの少しのトラブルシューティングを行うだけで自分でも簡単に修正できます。すぐにコマンドを実行できるようになります。

本記事ではまず、SSHの概要と用途について説明します。次に、PuTTYなど、接続が拒否される一般的な理由をいくつか紹介します。最後に、トラブルシューティングの手順も紹介します。

それでは参りましょう。

SSHとは何か、いつ使用すべきか?

Secure Shell(SSH、Secure Socket Shellとも)は、セキュリティで保護されていないネットワークを使用してサイトのサーバーに安全にアクセスするためのプロトコルです。言い換えれば、お好みのコマンドラインインターフェースを使用してリモートでサーバーに安全にログインする方法です。

sshログインの例
KinstaでホストされているWordPressサイトへのSSHを使用したリモートアクセス

サーバー上のファイルのアップロード、削除、編集のみができるファイル転送プロトコル(FTP)とは異なり、SSHではさまざまな作業ができます。たとえば、エラーによりWordPressサイトにアクセスできなくなった場合、SSHを使用してリモートでアクセスできます。

このプロトコルでは、次のような主要な開発者ツールを使用することもできます。

  • WP-CLI。WordPressのコマンドライン。新規インストール、プラグインの一括更新、メディアファイルのインポートなど、さまざまな作業ができます
  • Composer。PHPパッケージマネージャー。必要なライブラリと依存関係を取得することにより、サイトのコードでいくつかのフレームワークが利用可能になります。
  • Git。コード変更の追跡に使用されるバージョン管理システム。一つのプロジェクトで共同で作業する複数の開発者のグループなら、特に役立ちます。
  • npm。JavaScriptパッケージマネージャー。コマンドラインとJavaScriptソフトウェアレジストリが含まれています。注:Kinstaのお客様がこの機能にアクセスするには、Enterpriseプランが必要です。

SSHの使用は上級のスキルであることにご注意ください。WordPressの一般ユーザーは、問題をSSHを使用して自分で解決しようとするのではなく、ご利用の開発者またはホスティング会社に問い合わせた方がいいです。

SSH接続が拒否されるのはなぜですか? (接続エラーの5つの理由)

残念ながら、SSHを使用してサーバーに接続しようとしているときに「接続拒否」エラーが発生する状況が複数あります。

最もよくある発生原因は次の通りです。

1. ご利用のSSHサービスがダウンしている

SSHを使用してサーバーに接続するには、サーバーがSSHデーモン(バックグラウンドで動作するプロセスで、接続要求を受け付けるプログラム)を実行している必要があります。

このサービスが停止している場合、サーバーに正常に接続できず、「接続拒否」エラーが発生する名合があります。

「接続拒否」エラー
ターミナルで見た「接続拒否」エラー

サーバーのSSHデーモンがダウンしている理由は、予期しないトラフィックの急増リソースの停止分散型サービス拒否(DDoS)攻撃など、さまざまな理由があります。以下で説明するトラブルシューティング手順を実施しても、ホスティング会社に連絡して、問題の真の原因を特定してもらうこともできます。

SSHサービスがダウンしていると思われる場合は、次のコマンドを実行して確認できます。

sudo service ssh status

コマンドラインを実行して「ダウン」が返された場合は、接続エラーの原因を見つけた可能性が高いです。

2. 認証情報が間違っている

単純すぎるかもしれませんが、サーバーに接続しようとしたときに認証情報の入力ミスをしただけの可能性があります。SSHを実行するために必要な情報が4つあります。

  • ホスト名。接続しようとしているサーバーのIPアドレスまたはドメイン名。
  • ユーザー名。 (S)FTPのユーザー名。
  • パスワード。 (S)FTPユのパスワード。
  • ポート。 デフォルトのポート番号は22です。一方、セキュリティ上の理由からSSHポート番号を変更しているホスティング会社もあります。(Kinstaもそうしています。)MyKinstaダッシュボードにログインすると検索いただけます。

次のコマンドを実行することによりも、SSHのポート番号を確認できます。

grep Port /etc/ssh/sshd_config

コマンドラインは正しいポート番号を返すはずです。

入力した認証情報が正しかったかどうか確認してください。入力ミスや間違ったIPアドレスまたはポート番号を入力してしまった可能性を考慮に入れておきましょう。

3. 使用しようとしているポートが閉じている

「ポート」とは、サーバーへの接続時に指定されるエンドポイントのことです。正しいポートを使用していることを確認することに加えて、使用しようとしているポートが開いているかどうかも確認する必要があります。

ハッカーはポートを悪用してサーバーにアクセスできるため、開いているポートはセキュリティ上の脆弱性です。このため、未使用のポートは、攻撃を防ぐために閉じられることがよくあります。

ポート第22号、またはサーバーのカスタムSSHポートが閉じている場合は、「接続拒否」エラーが発生します。次のコマンドを実行して、ポートが待機しているかどうかを確認できます。

sudo netstat -plnt

コマンドラインは、ポートのリストとそれぞれの状態を返すはずです。ポート第22号の状態はLISTEN(待機中)でなければなりません。そうでない場合は、サーバーに接続できるためにポートを再度開く必要があります。

4. SSHがサーバーにインストールされていない

前述のように、サーバーはSSHデーモンを使用して接続要求を受け付けます。したがって、接続しようとしているサーバーにデーモンがインストールされていない場合、SSHを使用してアクセスすることはできません。

一般的に言えば、ほとんどすべてのホスティング会社では、デフォルトでサーバーにSSHデーモンがインストールされています。SSHデーモンがインストールされていないという問題は、ローカルホストまたは専用サーバーで発生する課題です。

5. ファイアウォールの設定でSSH接続を許可しない

ポートを開くとセキュリティ上のリスクが生じるため、ハッカーからサーバーを保護するためにファイアウォールをインストールすると、ポートへの接続がブロックされることがあります。残念ながら、このため、サーバーにSSHを使用して接続しようとしている無害なユーザーでさえ、ファイアウォール設定のせいで「接続拒否」エラーが発生する可能性があります。

設定が正しくても接続できない場合は、ファイアウォールのルールも確認してください。 以下のコマンドを使用すると、コマンドラインインターフェースでルールを表示できます。

sudo iptables-save # display IPv4 rules
sudo ip6tables-save # display IPv6 rules

結果はさまざまですが、次の要素を探して、ファイアウォールがSSH接続をブロックしているかどうかを判断します。

  • dport 22:宛先ポート。SSHの場合、通常は第22号です。(注:Kinstaはこのポート番号を使用しません)。
  • REJECT:宛先は接続を拒否している場合に示されます。
  • DROP:REJECTと同様に、該当のポートへの接続が拒否されていることを意味しています。

上記のコマンドの結果でdport 22を検索すると、ファイアウォールがSSH接続を許可しているかどうかを判別できるはずです。許可していない場合は、ルールを要求を受け入れるように変更する必要があります。

PuTTYで「接続拒否」と表示されるのはなぜ?

PuTTYはSSHクライアントです。FTPで例えてみると、PuTTYはWindowsマシンのSSHFileZillaです。つまり、PuTTYを使用すると、ユーザーは認証情報を入力してSSH接続を開始できます。

puttyをダウンロード
PuTTYのWebサイト

PuTTYを使用しているときに「接続拒否」エラーが表示された場合、原因は上記のいずれかであると考えられます。

これはあくまでも普通のSSH接続異常です。サーバーへの接続方法はPuTTYだろうがターミナルだろうが、以下のトラブルシューティング手順に従えば問題が解決するはずです。

SSH接続エラーのトラブルシューティング

SSH接続エラーが発生した場合、原因はぞれぞれであるため、トラブルシューティングの手順もそれぞれです。「接続拒否」エラーの上記の原因のトラブルシューティングは次の通りです。

  • ご利用のSSHサービスがダウンしている場合。 ホスティング会社ーに連絡して、SSHサービスが提供されない理由を確認します。ローカルホストまたは専用サーバーの場合、コマンドsudo service ssh restartを使用して、SSHサービスの再実行してみることができます。
  • 認証情報が間違っている場合。コマンド grep Port /etc/ssh/sshd_config を使用してSSHポート番号を再確認した上で、正しい認証情報を使用して接続を再試行します。
  • 使用しようとしているポートが閉じている場合。これは通常、以下に示す2つの原因のいずれかの副作用です。接続先のサーバーにSSHデーモンをインストールするか、SSHポートへの接続を受け入れるようにファイアウォールのルールを変更します。
  • SSHがサーバーにインストールされていない場合。コマンドsudo apt install openssh-serverを使用して、接続先のサーバーにOpenSSHなどのSSHツールをインストールします。
  • ファイアウォールの設定でSSH接続を許可しない場合。宛先ポートの設定をACCEPTに変更して、SSH接続を許可しないファイアウォールルールを無効にします

ホスティング会社のサーバーに接続しようとしている場合は、自分で問題を解決してみるよりも、サポートに問い合わせた 方が良いでしょう。上記の解決策をすべて実施しても問題が解決しない場合、localhostまたは専用サーバーのユーザーは、より専門的なフォーラムでさらなるサポートを探してください。

Are you getting the 'Connection refused' error over SSH? Learn why that's happening and how to troubleshoot SSH connectivity errors thanks to this guide 🙅 ✋ クリックでつぶやく

まとめ

サーバーへのSSHを使用した接続は非常に便利なことです。 WordPressダッシュボードにアクセスできないときにサイトにアクセスしたり、WP-CLIを使用してコマンドを実行したり、Gitを使用してサイトのコードの変更を追跡したりできます。

SSH接続エラーには様々な原因がありますが、最もよくあるものを次に示します。

  1. ご利用のSSHサービスがダウンしている
  2. 認証情報が間違っている
  3. 使用しようとしているポートが閉じている
  4. SSHがサーバーにインストールされていない
  5. ファイアウォールの設定でSSH接続を許可しない

アプリケーションデータベースWordPressサイトのすべてを一箇所で。Kinstaの高性能クラウドプラットフォームでは、次のような便利な性能や機能の数々をご用意しています。

  • MyKinstaでの簡単な設定と管理
  • 24時間年中無休のWordPressエンジニアによるサポート
  • 最高レベルのGoogle Cloud Platformハードウェアとネットワーク(Kubernetesにより優れた拡張性を実現)
  • 速度と堅牢性を両立するエンタープライズレベルのCloudflare統合
  • 世界各地35箇所のデータセンターと275に達するPoP(世界規模でオーディエンスに訴求可能)

アプリケーションホスティングデータベースホスティングを実質無料からご利用いただけます。プラン一覧をご覧いただくか、営業までお気軽にお問い合わせください