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もサポートしています。