SSH and public key encription

Identity

近代的なOSでは,ユーザを区別しています.大学では全学生がECCSのiMac端末を使えますが,各自が同じ名前のファイル report.pdf を作成しても取り違えなどの混乱が起きない理由は,ユーザとホームディレクトリが区別されているからです.

ログインした状態で自分のユーザID (uid) を知るには,id コマンドを用います.($ をプロンプトの印として使っています)

$ id
uid=197890(tk), ...

使用中の計算機自身の名前 (ホスト名) を知るには,hostname コマンドを用います.

$ hostname
StenhammerII

コンピュータのホスト名や,どのユーザ名にどの番号を割り当てるかは,管理者が決めます.自宅のPCの場合は,購入後最初にセットアップした時に入力した名前がユーザ名に,名前のMac のような文字列がホスト名になっているかもしれません.

SSH で遠隔地の計算機 (サーバ) を利用する際には,正しいユーザのみ使えるように,手元とサーバのユーザの対応関係を制御する必要があります.

Authentication

  • 公開鍵暗号の仕組みと運用を理解しましょう.例: 情報の授業の演習資料 (なお,GPGの鍵とSSHの鍵は,共通の背景を持ちますが,実体としてはそれぞれ別の鍵を使います.)
  • SSH では,公開鍵暗号を使って,ユーザを認証し不正アクセスを防止します.その仕組みを簡単に調べてみましょう.
    適切な入門文書を探してください.

Questions

以下の質問の答えを用意して,指導者に理解の確認を受けてください.

  • login時に正しいユーザの判別に,公開鍵暗号がどのように使われますか? 「公開鍵」「秘密鍵」「サーバ (ログイン先)」「ユーザのPC (ログイン元)」の言葉を使って,説明してください
  • あなたはログインできる正規ユーザとします.偽のユーザがあなたと偽ってログインしようとした際に,どのようにサーバは偽物と見分けるかを説明してください
  • 何らかの異常が発生し,偽のユーザがログインできてしまったと仮定します.どのような原因が考えられますか?
  • SSHで鍵ペアを作る際に,パスフレーズ ( ( \neq ) ログインパスワード) を聞かれます.これはどのような状況で役に立つでしょう?
  • セキュリティを維持するために,個々のSSHユーザが心がけるべきことは何でしょう?
  • もしあなたのノートPCがコンピュータウィルスに汚染されたかもしれないとわかったら,直ちに行動をとる必要があります.そのなかで,SSHについてはなにかあるでしょうか?

Key generation

鍵ペアの生成は以下のコマンドで行います.成功すると,ホームの .ssh に鍵ペアがおかれます..pub のついている方が公開鍵,また rsaecdsa は暗号アルゴリズムの名称です.

$ ssh-keygen

典型的な応答は,以下のようなものです.英語を読んで理解してください

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/name/.ssh/id_rsa):

ファイル名は,通常は default でよく,何も入力せず Enter を押すと良いです.
次の質問にはよく注意して応答してください.empty for no passphraseの選択は避けましょう.なお,入力した文字列は表示されません.

Enter passphrase (empty for no passphrase):

次の質問にもよく注意して応答してください.

Enter same passphrase again:

成功すると以下のようなメッセージが出ます.英語を理解してください.

Your identification has been saved in id_rsa
Your public key has been saved in id_rsa.pub
The key fingerprint is: ...

作成した公開鍵を眺めてみましょう

$ cat ~/ssh/.id_rsa.pub

空白区切りで3つの文字列があるはずです.1つ目は,ssh-rsaなどで暗号方式の意味です.2つめはが鍵 (のascii文字での表現)です.3つめは鍵ペアを作成したユーザとホスト名です.