Secure Shell (SSH) について

1998/07/06

ファイアウォールの外のマシン(fuji, suzuka, aida)に SSH をインストールしました。 これらのマシンに telnet や rlogin される方、 とくに root になる可能性のある方は、 できるかぎり SSH を利用するようにして下さい。


解説

SSH (Secure Shell) は rsh, rlogin などの rコマンド(リモートコマンド) を、セッションを暗号化する sコマンドに置き換えるものです。 SSH は公開鍵暗号を利用してセッションを暗号化するため、 鍵情報の取扱が簡単です (厳密には公開鍵暗号はセッション鍵の交換に用い、 実際のセッションの暗号化は共通鍵暗号でしていると思います)。

クライアント側のプログラムとしては rsh, rlogin, rcp にそれぞれ ssh, slogin, scp が対応します。 ssh は xrsh と同等の機能も持ちます。

サーバ側は sshd というデーモンがクライアントの sコマンドからの要求を処理します。


準備

研コンをサーバにする場合

研コンの3マシン (fuji, suzuka, aida) にはすでに sshd が動作しています。 ユーザとして必要になる作業は
  1. クライアント側のマシンに sコマンドを用意する。
  2. クライアント側で鍵を生成する。
  3. 生成した公開鍵をサーバ側に登録する。
の3つです。

鍵の生成や登録は次節で説明します。 研コンをクライアントにする場合の説明ですが、 サーバとクライアントを逆に考えればよいだけです。

ssh のクライアントプログラムは UNIX用なら簡単に入手・インストールできます。 Windows や Mac にも GNUや shareware の実装があるようです。 詳しくは JAISTの方のページ などを参考にしてみてください。 (自分でやってみて、うまくいったら報告します)


研コンをクライアントにする場合

必要なクライアントプログラムはすでにインストールされているので、 ユーザとしては鍵の生成などの作業をします。

まず

% ssh-keygen
とすると鍵の生成が始まります (%はコマンドラインプロンプトだと思って下さい)。
Initializing random number generator...
Generating p:  .....++ (distance 50)
Generating q:  ................................++ (distance 438)
Computing the keys...
Testing the keys...
Key generation complete.
Enter file in which to save the key (/home/morikawa/.ssh/identity):
しばらくすると鍵の生成が終わり、 保存場所を聞いてきます。普通はただリターンを押せば OKです。 すると、次にパスフレーズを尋ねてきます。
Enter passphrase:

パスフレーズはパスワードの一種ですが、sshの暗号鍵に使われるのではなく、 鍵をローカルのディスクに保存しておくためのパスワードになります。 文字数の制限や空白の有無は気にしなくてもよいので、 自由な文字列(文章)を入力することができます。 ただし簡単に類推されないようにあまりにもわかりやすい文章は避け、 できれば大文字小文字や空白を不自然に使ったり、 わざと間違った文字を入れたりします。 たとえば

anzen2 tSuShin4 taikara $$H
(「安全に通信したいからSSH」)
のような感じです(間違ってもこの例をそのまま使ったりしないように!)。 入力したパスフレーズは表示されないので、忘れずに覚えておきます。 確認のためもう一度入力すると、生成は終了です。

生成された秘密鍵は ‾/.ssh/identity に保存され、対応する公開鍵は ‾/.ssh/identity.pub に保存されます (上で特に指定した場合はその名前になります)。

秘密鍵 identity は(パスフレーズで守られているとはいえ) 絶対に秘密に保つようにします。 パーミッションにより他人には見られないようにしておいてください (通常は自動的に適当なパーミッションに設定されます)。

一方、公開鍵 identity.pub は秘密に保つ必要はありません (もちろん他人に書き換えられては困りますが)。

次の作業は出来上がった公開鍵をサーバに登録することです。 そのためにはサーバ側の ‾/.ssh/known_hosts に クライアントの identity.pub (の中身)を追加してやる必要があります。 identity.pub は秘密にする必要はなく、テキストファイル形式なので、 通常の電子メールや FTP でサーバに移し、 通常のテキストエディタや「cat >> (filename)」コマンドで known_hosts に加えます。 known_hostsは一行に一つの公開鍵が書いてある形式になりますので、 注意して下さい。

研コンのマシン間で sshセッションを開くこともありうるので、 自分の公開鍵を known_hosts の第1行目として登録しておきましょう。 具体的には

% cd ‾/.ssh
% cp identity.pub known_hosts
とします。 ‾/.ssh ディレクトリは NFS で共有されていますので、 これで自動的に fuji, suzuka, aida の3マシンをそれぞれ サーバとみなして公開鍵を登録できたことになります。

実際に使ってみる


その他の情報

以上で SSH の簡単な使い方の説明を終ります。

もっと細かい説明は man page や 日本語訳版 ssh-FAQ などを参考にして下さい。


last modified: 07/06/98 ; 15:49:40 (JST)

Secure Shell について / 研コン室 / 月曜相談員 森川
< morikawa@med.teikyo-u.ac.jp >