SSH 公開鍵認証とは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
SSHとは何か?
SSHとは「Secure SHell」の略で、ネットワークに接続された別のコンピューターをリモートで操作するための方法です。
例えば、自分のPCから、遠方にあるレンタルサーバーやクラウドサーバーなどのサーバーコンピューターを遠隔操作するために使います。
具体的な使い方としては、自分のPCに「SSHクライアント」と呼ばれるソフトをインストールし、接続先のサーバー情報を登録して「接続」ボタンをクリックすると、サーバーに接続され、遠隔から、サーバーの内部を操作したり、ファイルの送受信を行ったり出来るといった形になります。
こういったことを行えるソフトは「FTP」や「Telnet」といったものが昔からありますが、SSHでは通信データが「暗号化」されるため、これらよりも安全に遠隔操作を行うことが出来ます。
Secureと呼ばれる所以ですね。
したがって、サーバーをリモート操作する場合は、基本的にSSHを使うようにしましょう。
SSHでサーバーに接続する際には「認証」を行う必要があります。
誰でも簡単にサーバーにリモート接続出来てしまっては、セキュリティ的に問題があるため、限られた管理者だけがアクセス出来るよう、認証が行われる訳ですね。
認証の方式にはいくつかの種類があり、最も簡単な認証方式は「パスワード認証方式」です。
パスワード認証方式とは?
パスワード認証方式は、ユーザー名とパスワードをあらかじめ決めておき、サーバーに接続する際にこれらを使ってログインする方式です。
パスワード認証は一般的に馴染み深く簡単な方法なのですが、例えば、管理者が単純なパスワードを設定してしまったり、他のサイトと同じパスワードを使い回してしまったりして、万が一パスワードが知られてしまうと、不正にログインされてしまう危険性があります。
そのため、より安全な認証方式として「公開鍵認証方式」というものが用意されています。
公開鍵認証方式とは?
公開鍵認証方式では、2つの鍵を使って認証を行います。
1つは「秘密鍵」、もう1つは「公開鍵」と呼ばれるものです。
ちなみに「鍵」と呼んでいますが、実態はコンピューター上のデータです。
秘密鍵は「電子署名」というデータを「作る」ことが出来ます。
公開鍵はその署名データが正しいかどうか「検証する」ことが出来ます。
まず、秘密鍵は自分のパソコンの中に大切に保管しておきます。
※万が一、この鍵が奪われてしまうとサーバーに不正アクセスされる危険性があります。
そして、公開鍵のほうはサーバーの中に保管しておきます。
これで準備完了です。
実際に認証を行う際は、以下のような流れになります。
まず、自分のパソコンで秘密鍵を使って「電子署名データ」を作成し、サーバーに送信します。
電子署名データを受け取ったサーバーは、公開鍵を使って検証してみます。
無事に検証に合格すれば「認証成功」と判断し、リモート接続を許可するといった流れです。
この「鍵」を使って作成した電子署名データは、とても複雑なデータとなっているため、パスワードのように簡単に推測されたりする危険性は低くなります。
そのため、秘密鍵さえしっかり管理しておけば、他から不正アクセスされる危険性は低く、パスワード認証方式よりも安全な認証方式となっています。
SSHで接続する際は、パスワード認証方式よりも安全な「公開鍵認証方式」を使うようにしましょう。
しっかりしたセキュリティ対策を行おう!
サーバーを管理、運営していく上では、リモート接続ツールは必須です。
しかし、リモートから接続出来るようにするということは、同時にセキュリティホールにもなり得る危険があります。
もし現在、FTPやTelnet等の非暗号化通信を使用している場合は、SSHを使うようにしましょう。
また、認証方式についてもパスワード認証ではなく、公開鍵認証を使うとともに、rootユーザーでのログイン禁止措置や、ポートの限定開放などのセキュリティ対策をしっかり行いましょう。
サーバー関連のスキルについては、専用のカテゴリーにまとめています。
これからも追加していく予定ですので是非ご覧頂けると嬉しいです。