SSHとSSLは、いずれも2つのコンピュータ(PCとウェブサイトのサーバーなど)間を通過するデータを暗号化し、認証するための技術で、より安全な手段になります。

しかし、SSHとSSLの違いを理解しておくことも重要です。

一般に、SSLはブラウザと訪問しているサイトのサーバーのような2箇所を通過するデータを暗号化するために使用されます。SSLは、Googleの調整(tune)アイコンをクリックして表示される「この接続は保護されています」を表示するものであり(以前は安全性を伝える緑色のアイコン、または南京錠だったもの)、ウェブサイト上でクレジットカード情報(またはその他の機密情報)を安全に受け入れたい場合には欠かせません。

一方、SSHは他のコンピュータ(ウェブサーバなど)にリモートでログインし、(SSHトンネルを介して)コマンドを発行するために安全な接続を確立します。例えば、WP-CLIでコマンドを実行するためにサイトのサーバーに接続するには、SSHを使用します。Kinstaでは、SFTPアクセスでサーバーに接続する際にもSSHを使用します。

この記事では、SSHとSSLの概要をご説明し、それぞれどのような用途に使用できるかを見ていきます。そして、SSHとSSLの技術的な違いを掘り下げていきます。

SSHとは

SSHはSecure Shell(セキュアシェル)の略です。他のコンピュータにリモートでログインし、コマンドを発行する安全な方法を提供します。

SSHトンネルを使用すると、クライアント(自分が使用しているコンピュータなど)とサーバー(訪問サイトのサーバーなど)の間に暗号化された接続を作成することができます。

安全なSSHトンネルを作成するには、ユーザー名/パスワード、または暗号化された公開鍵/秘密鍵のセットを使用して認証しなければなりません。

認証が完了すると、データ(サイトのファイルやデータベースなど)に安全にアクセスしたり、コマンドラインを使ってリモートサーバーにコマンドを発行したりできるようになります。

SSHの用途

SSHの用途に関しては、「何に使用できないのか」を挙げる方が簡単で、一度SSHでサーバーに接続したら、コマンドラインを理解していれば、あらゆるコマンドを実行できます。

例えば、WordPressサイトを運営している場合、SSHで接続した後は、WP-CLIを使ってWordPressサイトやプラグインとやり取りすることができます。コンテンツの作成、更新の適用、タクソノミーの管理など、さまざまなことを実行可能です。WP-CLIは、KinstaのWordPress専用マネージドホスティングの全プランにデフォルトでインストールされています。

Kinstaでは、すべてのお客様にSSH接続を提供しており、MyKinstaからSSH鍵を追加することも可能です(SSHの使用方法はこちら)。

より具体的な用途としては、SSHを使用してターミナルでファイルを解凍するなどがあります。

コマンドラインからサーバーを管理するだけでなく、重要なツールであるSFTP(SSH File Transfer Protocol、Secure File Transfer Protocol)も支えています。SFTPを使用すると、安全なSSHトンネル経由でサーバーに接続し、通常のようにFTPを使用してファイルを管理することができます。

Kinstaでは、SFTPは暗号化されていない通常のFTPよりもはるかに安全であることから、SFTPアクセスのみを提供しています。

あるいは、SSHを使用してサイトのデータベースに直接アクセスすることも可能です(KinstaではphpMyAdminを使った簡単なデータベース管理も可能)。

通常、SSHを使用してサーバーに接続すると、必要に応じて独自のコマンドを実行できるため、非常に柔軟性があります。

SSLとは

SSLは、Secure Sockets Layerの略であり、技術的には、TLS(Transport Layer Security)プロトコルの古いバージョンです。実用上はSSLとTLSは同じであるため、本記事ではSSLと呼びます。

SSLは主に2者間のデータ伝送を暗号化と認証で保護するためのプロトコル。最も一般的なのは、ブラウザと訪問サイトのサーバー間の通信に使用されます。

SSLには、以下のような利点があります。

  • 暗号化:転送中のデータを暗号化することで、悪意のある第三者によってデータを傍受されるのを防ぐ。
  • 認証:データが正しいサーバーに送信され、正しいサーバーから受信されていることを保証する。
  • データの完全性:転送中のデータの損失や改ざんがないことを確認し、データの完全性も保証する。

SSLは、証明書を使用することで機能するため、SSL証明書という言葉がよく使用されています。

SSLはサーバーの認証には役立ちますが、クライアント(サイトの訪問者など)の認証は不要です。この点は、クライアントからの認証を必要とするSSHとは異なります。

SSLの仕組みに関する詳細はこちらをご覧ください。

SSL証明書はすべてのウェブサイトに必要なものですが、設定を誤るとSSL接続エラーが発生することがあります。Kinstaでは、この手のエラーを解決するお手伝いも行っています。

SSLの用途

ウェブサイトにSSL証明書をインストールすることで、HTTPSを有効化し、訪問者のブラウザに「この接続は保護されています」を表示させることができる、というのはご存知かもしれません。

SSL証明書をインストールし、HTTPSを有効にすると、サイトと訪問者のブラウザ間を通過するデータが暗号化され、安全な状態が確保されます。

ECサイトなど、どのようなタイプのウェブサイトであっても、SSL証明書をインストールすることで、上のようなメリットを得ることができ、訪問者やGoogleのような検索エンジンからの信頼を築くことができます。

少しわかりにくいかもしれませんが、SSLを使えばFTPで安全にファイルを転送することも可能です。これはFTPS(File Transfer Protocol over SSL)と呼ばれ、SFTPとは異なりますが、FTPをより安全にするという目的があります。

Kinstaでは、SFTP(SSH)のみを提供しており、FTPS(SSL)はサポートしていません。

SSHとSSLの細かな違い(上級者向け)

ここまでご紹介した内容から、SSHとSSLの間には多くの類似点があることがわかります。

  • どちらも安全な接続を作成するのに役立つ
  • どちらも2つのデバイス間を通過するデータを暗号化する

SSHとSSLの決定的な違いは、SSHは別のコンピューターに安全なトンネルを作り、そこからコマンドを発行したり、データを転送したりするという点にあります。

一方、SSLは2者間の安全なデータ転送に使われ、SSHのようにコマンドを発行することはできません。

例えば、ノートパソコンを利用しているとして、それぞれのプロトコルには以下のようなシナリオで遭遇します。

  • SSH─ウェブサイトのサーバーに安全に接続し、WP-CLIを使用してWordPressサイトを管理したい場合には、SSHを使用
  • SSL─ウェブサイトのフロントエンドフォームとやりとりしてデータを送信する場合、ブラウザとサーバーのデータベース間を移動するフォームデータを暗号化するためにサーバーがSSLを使用

SSL証明書をインストールし、HTTPSを有効にしている限り、サイトにアクセスするすべての人は、SSLを使用してサイトのサーバーと対話します。 サイトへのアクセスにサイト訪問者の認証は不要です。

しかし、SSHを使ってやり取りするのは自分自身、またはサーバーへのアクセス権限を持ち、ユーザー名/パスワードか暗号鍵のいずれかで認証できるIT担当者のみになります。

SSHとSSLの技術的な違い

SSHとSSLの間には、もちろん技術的な違いも多数あります。一般ユーザーにはあまり関係ないかもしれませんが、日々技術的な作業を行う場合には重要になります。

SSH

SSL

他のマシンに安全にリモート接続し、コマンドを発行するために使用

サイト訪問者とサイトのサーバーの2者間で安全にデータを送信するために使用

ネットワークトンネルに基づく

デジタル証明書(SSL証明書)に基づく

ポート22で実行

ポート443で実行

クライアントがユーザー名/パスワードまたは暗号鍵で認証

サーバーサイドでのみ認証(クライアントは認証不要)

暗号ネットワークプロトコル

セキュリティプロトコル

まとめ

SSHとSSLはどちらも安全な接続に役立つプロトコルであり、一見似ていますが、目的は大きく異なります。

SSLは、主にサイトの訪問者とサーバーの間を移動するデータを暗号化するために使用されます。例えば、訪問者がクレジットカード情報を入力したり、ログインフォームにパスワードを入力したりする場合、SSLはそのデータを暗号化し、中間者攻撃から保護します。

SSHは、リモートマシンに安全にログインし、そのマシン上でコマンドを発行したり、ファイルを操作したりするために使用されます。WP-CLIを使ったり、SFTPでサイトのファイルを管理したり、リモートでデータベースにアクセスしたりする状況で必要になります。

また、SSHを使ってサーバーに接続できるのは、ユーザー名/パスワード、またはSSH鍵で認証できるユーザーのみです。

Kinstaでは、CloudflareのワイルドカードSSL証明書をすべてのサイトに自動インストールしています。このため、SSLに関する設定は不要です。必要に応じてWordPressサイトに独自SSL証明書をインストールすることも可能です。

また、すべてのプランでSSH接続WP-CLIをサポートしているため、SSHを使用してサイトを管理可能です。FTPを使用してサイトとファイルを安全に管理できるよう、SFTPもサポートしています。