サーバの管理をするなど、扱うコンピュータの数が多くなってきた時いちいちコンピュータの目の前に行き作業をするのは手間がかかります。コンピュータを離れた場所から操作する手段としてリモートシェルというものがあります。代表的なリモートシェルとして rsh や telnet といったものがあり、これらを使用することにより離れた場所にあるコンピュータに命令を送り実行させることができます。
しかし rsh と telnet は通信内容が平文で送信されるため、通信経路の途中で通信内容を盗聴されると重要な情報が漏れてしまう危険性があります。
このセキュリティ上の問題を解決し安全に遠隔操作を行うことができるリモートシェルとして SSH というものがあります。
SSH は暗号化を施したリモートシェルで、次の3つを組み合わせて暗号通信を行います。
このうち共通鍵暗号方式と公開鍵暗号方式は鍵暗号と呼ばれる暗号化技術です。鍵暗号ではその言葉通り「鍵」と呼ばれるものを使用してデータの暗号化や復号を行います。
共通鍵暗号方式は一つの鍵で暗号化と復号を行います。暗号化と復号に同じ鍵を用いるため、暗号通信を行う場合は予め安全な経路を使用して鍵を渡す必要があります (ネットワークを通して渡すのはNG)。通信先に鍵を予め渡しておく必要があることから、この暗号方式は通信先が決まっている時、つまり特定の人と通信をするのに向いています。また、共通鍵暗号方式の特徴として暗号化等の処理が早いという点があります。
公開鍵暗号方式は異なる鍵を用いて暗号化と復号を行います。この暗号方式で使われる鍵として、公開鍵と秘密鍵の2種類があります。
公開鍵暗号方式では、データを受信したい人は公開鍵をネットワーク上に公開し、それを使用して暗号化したデータを送ってもらいます。暗号化されたデータは公開鍵を生成した本人が持つ秘密鍵を使用してのみ復号できるため、暗号化されたデータを他人に読まれる心配はありません。公開鍵暗号方式は公開鍵をネットワーク上に公開することができるため、共通鍵暗号方式とは違い、通信先が決まっていない場合でも柔軟に暗号通信を行うことができます。ただし、公開鍵暗号方式は共通鍵暗号方式よりも暗号化等の処理に時間がかかるという欠点があります。
秘密鍵で暗号化することもできますが、復号するために必要な公開鍵は誰でも入手できるため情報の守秘性を守るものにはなりません。
公開鍵で暗号化したデータは、対となる秘密鍵で復号した場合のみ暗号化前と同じデータを得ることができます。また対となる秘密鍵を持っているのは鍵を生成したユーザ本人だけであるため、暗号化して送信したデータが正しい内容で返ってきた時正しいユーザであることの証明となります。
ユーザが通信を終えたら共通鍵は破棄され、再び通信を行うときは 再度サーバから入手します。(サーバもその都度新しく共通鍵を生成します)
SSH では上記のように二つの鍵暗号方式を組み合わせて使用し、両者の長所を生かした暗号通信を行います。
今回は皆さんのノート PC にインストールされている PuTTY というプログラムを使用して Windows から SSH サーバへアクセスします。今回は触れませんが、Linux から SSH サーバへアクセスすることもできます。
SSH サーバへの接続に必要なものを用意します。
SSH の説明の項から分かるように
の二つが必要になります。
(SSH と SCP の使用方法については、こちらのページでも説明されているので参照してみてください。)
PuTTY のプログラム群に含まれる puttygen.exe というプログラムを使用して次の手順で秘密鍵を作成します。
二つの鍵は後で使用するので分かりやすい場所に保存しておいてください。
情報科学部のサーバでは情報科学部メンバーサイトから情報科学部のサーバに公開鍵が登録できるのでそれを利用します。登録の際ユーザ名とパスワードを求められますが、ラボマシンにログインする時のユーザ名とパスワードを入力してください。
今回は上記の登録方法を使用しますが、通常公開鍵を登録する時はユーザのホームディレクトリに .ssh というディレクトリを作成し、その中に authorized_keys というファイルを作り公開鍵を登録します。
/home └ ユーザ名 (ホームディレクトリ) └ .ssh (ディレクトリ) └ authorized_keys <- 公開鍵
基本的な設定項目は以下のとおりです。
設定名 | 内容 | PuTTYでの項目 |
---|---|---|
セッション名 | セッションの名前。この名前で設定内容が保存されます。 | [セッション]の「保存されたセッション」 |
ホスト名 | 接続するサーバのホスト名 | [セッション]の「ホスト名」 |
秘密鍵 | サーバに登録した公開鍵と対になる秘密鍵 | [接続] -> [SSH]-> [認証] の「認証のためのプライベートキーファイル」 |
ユーザ名 | サーバにログインするときのユーザ名 | [接続] -> [データ] の自動ログインユーザ名 |
文字セット | サーバが使用している文字セット | [ウィンドウ] -> [変換] の「受信のデータは次の文字セットとみなされる」 |
最低限ホスト名と秘密鍵さえ設定すれば接続はできます。
他の設定に関しては
情報科学部のサーバに接続するときの設定は
設定名 | 内容 |
---|---|
セッション名 | 分かりやすければ何でもいいです。Lab 等。ホスト名をそのまま使ってもいいです |
ホスト名 | ssh.cis.k.hosei.ac.jp |
秘密鍵 | 情報科学部メンバーサイトで登録した公開鍵と対になる秘密鍵 |
ユーザ名 | ラボマシンにログインする時のユーザ名 |
文字セット | UTF-8 (CJK) |
次の手順で SSH サーバへ接続を行います。
後は Linux の端末を使うように扱えます。
Windows 上で SCP を利用するために WinSCP というプログラムを使います。こちらも皆さんのノート PC にはすでにインストールされています。
次の手順で PuTTY の設定を WinSCP に取り込んで利用することができます。
今回接続する情報科学部のアプリケーションサーバからはラボ環境のホームディレクトリにアクセスすることができます。
図のようにラボ環境ではファイル本体をラボマシンとは別のファイルサーバに保存し、ラボマシンやアプリケーションサーバはネットワークを通してこのファイルを共有しています。