Winserverなら
Windows Server 2022が業界最高のコスパ!
\月額990円~ 2週間無料トライアルも/
2週間無料で試してみる
Webサイトの閲覧、メールの送受信やzoomのような最近増えているオンライン会議など、今やネットワークを介してさまざまなサービスが利用できるようになっています。
ネットワークを利用する上で欠かせないのが「通信の安全性」です。
もし、盗聴や不正アクセスなどによって重要な情報が外部に流出してしまうと大きな問題ともなります。
今回は、こういったセキュリティリスクを避けるための、ネットワークで安全な通信を行う仕組みであるSSHについて解説します。
目次
SSHとは
SSH(Secure Shell)とは、コンピューターで通信のために使われるプロトコルの一つです。
プロトコルとは、異なるコンピューター同士が互いに通信するために定められた手順や規格を指します。
まずは、SSHが生まれてきた背景とSSHの概要について解説します。
必要になったセキュアな通信
一般的にコンピュータで通信を行う際に使われる通信サービスには、従来からTelnetやFTPなどがあります。
Telnetとは、ネットワークに接続されたサーバーやネットワーク機器などを遠隔で操作できるようにするプロトコルのことです。
たとえば、テレワークの際に自宅に設置したPCから、サーバーやルーターなどを操作することができます。
FTPとはネットワークを通してファイルを送受信するためのプロトコルです。
たとえば、Webサイトを公開する際に、Webサイトに表示する画像やテキストといったファイルはFTPを利用してWebサーバーに転送されます。
FTPについてはこちらの記事で詳しく紹介しています。
これらのプロトコルは、従来からよく利用されてきましたが、重大な問題があります。
それは「暗号化がされていない」ということです。
暗号化されていないということは、以下のようなリスクがあります。
- IDやパスワード、その他の重要な情報が盗聴される
- 情報流出
- 他人のなりすまし
セキュリティ上のリスクからデータを守るためには、サーバーを操作する人のみがサーバーやネットワーク機器に安全に接続できるようにする必要があります。
TelnetやFTPの問題点を解決するために開発されたのが、通信を暗号化して読み取ることができないようにするSSHの仕組みです。
SSHとは
SSHとは、「通信内容を暗号化する」「鍵認証など高度な認証方法を使う」などのセキュアな方法を使うことで安全な通信を行うことができるようにする仕組みです。
認証の仕組みとしては、「パスワード認証方式」、「公開鍵認証方式」などの方法が使えますが、SSHでもっともポイントとなるのは「通信を暗号化することで読み取られない」ようにしたことです。
これにより今や多くのWebサービスやリモートサービスがSSHを採用するようになっています。
SSLとの違いとは
SSHと同じようにセキュアな通信を実現する仕組みとしてよく取り上げられるものとしてSSL(Secure Socket Layer)があります。
SSLとSSHについて、それぞれの主な用途、主な目的、ユーザー認証の方法の違いを表に整理してみます。
SSH | SSL | |
---|---|---|
用途 | サーバーへの安全な接続 | Webサイトの安全な表示 |
目的 | ・接続先がなりすましでないかの証明 | ・接続先がなりすましでないかの証明 ・クライアントの認証 ・通信内容の盗聴の防止 |
ユーザー認証 | 公開鍵による認証 | 証明書による認証 |
このようにSSLとSSHは同じように通信を暗号化して安全に送受信を行うためのプロトコルですが、いくつかの異なる点があることが分かります。
また、それぞれの対象者にも注意しましょう。
SSHの対象はそのサーバーを管理する人であり、SSLの対象はそのWebサイトを閲覧する人です。
SSLおよびSSLサーバー証明書についてはこちらの記事で詳しく紹介しています。
SSHによる通信の仕組み
代表的な暗号化通信の仕組みであるSSH。
SSHでセキュアな通信が行われるためにはどういった仕組みになっているのでしょうか。
SSHでセキュアな通信を行うためのポイントとなるのが「公開鍵によるユーザー認証」です。この認証は、以下のような流れで行われます。
- 端末側で秘密鍵と公開鍵のペアを作成する
- 接続する相手のサーバーに公開鍵を設置しておく
- 端末側で秘密鍵を使って署名(Signature)を作成してサーバーに設置する
- 通信の際には作成した鍵のペアを照合することで認証を行う
このように、SSHによる通信を行う場合は、公開鍵による認証が必要となります。
SSHを使う
具体的にSSHを使うには、どうすれば使えるのでしょうか?
早速、実際にSSHを使ってみましょう。
実際にSSHを使ってサーバーに接続するには、いくつかの方法があります。
一般的には「サーバーを操作する」あるいは「サーバーからファイルを送受信する」といったケースで使われることが多いのですが、これらについて解説します。
<サーバー操作:Telnet → SSH>
コンソールでサーバー操作をする場合、暗号化通信を活用するのであれば、Telnetでなく、SSHコンソールを使います。TeratermPro with SSH(Windows)やTerminal(Mac)を使います。
<ファイル送受信:FTP → SCP, SFTP>
暗号化した安全なファイルの送受信はSFTPやSCPを使います。
これには、WinSCP(Windows)や、Cyberduck(Mac)といったツールが使えます。
いずれにしろ、暗号化による通信は、上記のようなツールを使うことで簡単に利用することができます。
認証の準備と接続
利用用途に合わせて上記のソフトウェアのダウンロードが完了したら、どのような設定を行うのでしょうか。
手順を簡単にご説明します。
まず、認証に必要な準備を行いましょう。
SSH接続の認証方法には「パスワード認証方式」「公開鍵認証方式」などの方法が使えると説明しました。
パスワード認証方式を使用する場合は、パスワードを決めて設定します。
公開鍵認証方式を使用する場合は、まず秘密鍵・公開鍵の2種類の鍵を作成します。
サーバー側に公開鍵を送信し、秘密鍵は厳重に管理します。
次に、接続を行います。
一度ログアウトしたら、再度SSHソフトウェアを立ち上げてサーバー側に認証を要求します。
公開鍵認証方式を使用する場合、秘密鍵と公開鍵でそれぞれ作成された暗号文を照らし合わせて認証を行います。
まとめ
年々巧妙化かつ悪質化するサイバー犯罪。
システムの脆弱性やバグなどを悪用した不正アクセスや盗聴などが急増する中、セキュリティレベルの向上は必須となっています。
そんな中、従来からサーバー管理などでよく使われるTelnet。
ファイル送受信を行うためのFTP。
これらは通信が暗号化されないために情報の漏洩などのリスクがあります。
これを解決するのが、今回解説したSSHです。
SSHは、公開鍵を使ったユーザー認証を用い、通信内容を暗号化することができるセキュアな通信プロトコルです。
暗号化通信を使うSSHコンソールやSCPなどはツールで簡単に利用することができます。
セキュリティレベルの高いSSH、今回の記事を参考にして、ぜひ活用しましょう。