SSH (Secure Shell)の概要

  1. SSH (Secure Shell)の概要
  2. OpenSSH インストールと設定
  3. OpenSSH 公開鍵認証の設定
 サーバーOSはこんな現代でもやはりコマンドラインが主流で、ここ最近いろいろなGUIが配布されていますが、それでも尚どうしてだかコマンドを使います。たぶん伝統ととか安定性というのもあるんでしょう。かつてはこの端末からのリモート操作にはtelnetが主流でしたがセキュリティーにうるさい現在にはtelnetを使用するのはLAN内などの限られた場所のみで殆どの人がSSHを使うようになりました。SSH(Secure Shell)は、その名の通りセキュアーなシェルでありまして、リモート操作といえども通常の端末操作となんらかわりがありません。つまり、SSHの設定さえしておけば後はセキュアーなシェルが遠隔地から自由に使えるというわけです。
 しかし、通常のシェル、またはかつてのtelnetとなんらかわりのない操作が可能ですが、仕組みはやや複雑です。設定時に混乱しないようにある程度仕組みを覚えておくと後々とても楽になると思います。

共通鍵と公開鍵

ssh_session.jpg SSHサーバーの中身といいますか、流れといいますか...そういうものが何を読んでも結局よくわからないという方々がどれぐらいおられるかわかりませんが私自身は最近まで本当によくわかりませんでした。UbuntuではOpenSSHというパッケージが主に使われていて一般的なので非常に設定しやすいばかりかセキュリティーもかなりいいです。にも関わらずなかなか設定が面倒くさいです。
 SSHでのこの面倒くささは主に「認証」に関する暗号化と復号化に関する設定です。しかし、大雑把にいってしまえば、要するに、
  • ユーザーやサーバーを特定し認証する時のみの暗号化と復号化の方法。
  • データやコマンドのやりとりをする際の暗号化と復号化の方法。
という二通りの方法があって、一つ目を「認証」といっているようです。ここら辺りの説明をスバリしてくれている解説が全くないので理解に非常に苦しみました。順序立てていいますと、最初にパスワード(パスフレーズ)でもってSSHに接続する際には従来のパスワード認証とは違って「共通鍵」というものをクライアントとサーバーの双方で交換します。正確にはサーバーがクライアントに共通鍵を渡してくれます。しかし、これはあくまでも鍵なので平文でネットワーク上を行き来させるに非常に危険です。ですので、この共通鍵を暗号化&復号化するために「公開鍵と秘密鍵」というものを用いて通信するわけです。公開鍵方式と言われている方法は、この共通鍵の暗号化と復号化の最初のセッションのみで使用し、セッションが確立した後には共通鍵でお互いに暗号化と復号化をします。
 この公開鍵方式といわれる方法の何がすばらしいのかというと、上記の共通鍵を毎度毎度違うものにするということです。同じデータの通信でも共通鍵が接続ごとに違うのでまるでちがった暗号になるので、これまた復号化が大変だ...というわけです。
 いずれにしろ公開鍵方式といわれるセッションでは、共通鍵の暗号化と復号化に関して「公開鍵と秘密鍵」が使用されるのであって、その後のデータの通信には共通鍵のみで暗号化と復号化を行います。
 共通鍵の受け渡しの最初のセッションでは、
  1. クライアントがSSHサーバーへ接続すると(3)、
  2. サーバーは公開鍵で共通鍵(4)を暗号化し(5)、クライアントに送信します。
  3. クライアントはこの暗号化された共通鍵を受け取り(6)、これを秘密鍵で復号化します。(8)
  4. これでサーバーとクライアント双方に共通鍵が行き渡ります。その後通常のデータのやりとりが行われます。
 その後のデータ通信には、共通鍵のみで暗号化と復号化をします。
ssh_pub.jpg さてここでは、この公開鍵認証を使ったSSH通信の設定方法を解説します。UbuntuサーバーにOpenSSHのインストール、Macクライアントの設定を中心に説明しますが、Windows OSのクライアントからでも勿論可能です。LAN内からのアクセス、またはインターネットからのアクセスも同様に公開鍵認証でアクセスします。

公開鍵認証の設定

 公開鍵認証(上記の説明のような複雑な暗号化と復号化のやり方...)には設定が必要です。公開鍵認証は、「公開鍵と秘密鍵」のペアで認証を行いますが実はこの鍵の作成はクライアント側で行います。サーバー側では行わないんです。図に示した通り秘密鍵の保持はクライアント側のみです。詳しくは公開鍵認証の設定を参照してください。








プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer