ARMA
           ARMA Net           製品とサポート           通信販売           会社概要           求人情報       
マニュアル目次

はじめに

第1章 ARMA とは

第2章 インストール
2.1 インストールの準備
2.2 インストール
2.3 ORCAの設定
2.4 データ DVD-R/CD-R の作成
2.5 Windows 下での ARMA
  のブート CD-R の作成

2.6 ブートUSBの作成
2.7 NVIDIA ドライバの設定
2.8 AMD(ATI) ドライバの設定
2.9 無線 LAN の設定

第3章 システムの設定
3.1 管理ツール
3.2 パッケージ管理
3.3 マウントとアンマウント
3.4 デバイスファイル
3.5 ブートローダ
3.6 TCP/IPネットワーク
3.7 基本的なネットワークの設定
3.8 ssh による暗号化通信
3.9 X Window System
3.10 時刻合わせの設定

第4章 アプリケーション
4.1 ログインと基本的なコマンド
4.2 シェル
4.3 テキスト処理ツール
4.4 テキストエディタ
4.5 WWWブラウザ
4.6 電子メール
4.7 ダウンロードコマンド
4.8 音楽系ツール
4.9 DVD-RW/CD-RW の
  パケットライティング

4.10 動画再生環境の構築
4.11 システム管理上のヒント

第5章 アップグレード
5.1 ARAM2.2/2.1 から ARMA3.0
  へのアップグレード

5.2 ARMA2.1(ORCA版) から
  ARMA3.0 へのアップグレード


第6章 プレインストール
6 プレイストールのセットアップ



※プリントされた本マニュアルは
通信販売よりご購入いただけます。
(印刷はモノクロとなります。また
HTML版・オンライン版と若干バージ
ョンが異なる場合がございます。)
 
3.8 ssh による暗号化通信
 
 
3.8.1 安全な通信のための暗号化
 
 コンピュータネットワークにおけるセキュリティの重要性は、近年ようやく広く認識されるようになりました。しかし、よく言われる「セキュリティ」は「侵入者から」の防衛が主で、もうひとつ重要な「盗聴者から」の防衛即ち「暗号化通信」に対する意識はそれほどでもないようです。
 インターネットがルーティングで成り立っている限り、その途中でパケットが盗聴される可能性はゼロにはなりません。そこで、盗聴されないのではなく、盗聴されても内容が分からないようにするというのが暗号化通信の発想です。
 ARMA では、暗号化通信システムとして SSH を標準採用しています。SSH は公開鍵暗号方式で暗号化通信を実現するシステムで、telnet,rsh,rcp,ftp によるリモートシェルやリモートファイルコピーの代わりに ssh, scp, sftp を提供します。特に ARMA のデフォルトでは telnetd, rsh, rcp を提供していないので、SSH は必須になります。
 
 
3.8.2 ssh の仕組み
 
 公開鍵暗号システムでは、「公開鍵」と「秘密鍵」の 2 つの電子的なデータの「鍵」からなる「鍵セット」を使います。この 2 つの鍵は、その名前の通り公開するか秘密にするかの違いはありますが、機能的な差はなく、どちらも「片方の鍵で暗号化したら、もう片方でしか復号できない」という特徴を持っています。もちろん、片方の鍵からもう一方を類推することは不可能になっています。
 この性質を生かして、SSH では以下の要領で通信を行います。
 
 
 
(1)
初めて接続するサーバなら、クライアントはサーバからそのホスト公開鍵を受けとり、鍵リストに加える。
 
(2)
クライアントは、適当なデータを鍵リストにあるホスト公開鍵で暗号化してサーバに送り、サーバは自分のホスト秘密鍵で復号化して返す。クライアントは、送信したデータと返信が一致すればサーバを正しいと認める。(ホスト認証成功)
 
(3)
ホスト認証終了と同時に、サーバ・クライアント間の通信を暗号化する共通鍵が生成され、以降の通信は全てこの共通鍵で暗号化する。
 
(4)
ユーザは「パスフレーズ」を入力する。パスフレーズは、暗号化されて記録されているユーザ秘密鍵を復号化し、使えるようにする。
 
(5)
サーバは、適当なデータをユーザ公開鍵で暗号化してクライアントに送り、クライアントはユーザ秘密鍵で復号化してサーバに返す。サーバは送信したデータと返信が一致すればユーザを正しいと認める。 (ユーザ認証成功)
 
 
公開鍵で暗号化されたデータを正しく復号化できるのはペアの秘密鍵のみです。ですから、ホスト認証のときにホスト公開鍵で暗号化したデータを正しく復号化できるのは、ホスト秘密鍵を知っている正しいサーバだけということになります。このホスト認証によってはじめて、接続するサーバに誰かが「なりすまし」ていないことが証明できるわけです。もちろん、ホスト秘密鍵が漏れてはホスト認証の意味がありませんので、秘密鍵はきちんと管理しなければなりません。ユーザ認証についても、これと同じ仕組みで認証が行われています。
 「パスフレーズ」がユーザ認証時の交信内容に含まれないことにも注目してください。また、仮にパスフレーズが漏洩してもユーザ秘密鍵にアクセスできなければユーザ認証を突破できませんが、ユーザ秘密鍵にアクセスするために必要なユーザのパスワードは、この一連の流れの中で一度も出てきません。このようにパスフレーズは、ログイン権限とパスワードの奪取を防ぐための砦になるものなので、「パスワードと違う」文字列でなければなりません。
 ユーザ認証時にパスフレーズが使えない場合、次善の策としてパスワードを使うこともありますが、これも (3) で作られた共通鍵で暗号化された通信路の中をパスワードが通っているので、単に盗聴してもパスワードは分かりません。これに対し telnetrsh による非暗号化通信では、パスワードがそのままネットワーク上を流れるため、通信を盗聴されると簡単にパスワードが漏洩してしまい大変危険です。
 
 
3.8.3 ssh の設定
 
 SSH の実装には、大きく分けて SSH 社による SSH Tectia と、OpenBSD プロジェクトによる OpenSSH があります。前者は商用ソフトですが、後者は BSD ライセンスのフリーソフトです。ARMA では Debian と同じく OpenSSH を標準として採用しており、ssh パッケージに含まれる SSH の実装も OpenSSH です。
 ○
 
あえて rsh を使用する場合は、ARMA Net リポジトリから rsh-client パッケージを導入してください。
 また、SSH には SSH1 と SSH2 のプロトコルがありますが、両者の間には暗号化の方式などあまり互換性がありません。OpenSSH は両方のプロトコルを扱えますが、設定は SSH1,2 を別々に行う必要があります。
 
ホスト認証用鍵セットの作成
 
 SSH サーバのホスト認証用の鍵セットや設定ファイルは /etc/ssh に格納されています。ssh パッケージをインストールした時点で、既に一通りの設定とホスト認証用の鍵セットはできていますが、万一の場合に備え ssh-keygen で鍵セットを再生成する方法を説明します。
 
 
# ssh-keygen -t <暗号化タイプ> -f <秘密鍵ファイル名> -N
 
 
 ○
 
SSH1 プロトコルは脆弱性が発見されているため利用は推奨されません。
 暗号化のタイプには SSH1 の RSA と、SSH2 の RSA, DSA があり、それぞれ rsa1, rsa, dsa と指定します。またホスト秘密鍵のファイル名は、以下のようにプロトコル毎に決まっています。一緒に作られる公開鍵は、秘密鍵に .pub を付けたファイル名になります。-N はパスフレーズで秘密鍵を暗号化しないようにするオプションで、ホスト認証用の鍵セットを作るときには指定します。
 
 
# ssh-keygen -t rsa  -f /etc/ssh/ssh_host_rsa_key
 
 
 ○
 
SSH2 では RSA が一般的ですので、DSA の鍵はここでは作りませんが、作る場合は /etc/ssh/ssh_host_dsa_keyという名前にします。
 ここで、生成された秘密鍵の属性は所有者・所有グループが root/root で、パーミッションが 600 = -rw------- であること、公開鍵の属性は所有者・所有グループが root/root で、パーミッションが 644 = -rw-r--r-- であることを確認してください。秘密鍵が root 以外に読めるようでは SSH が台無しです。
 
 
$ ls -l ssh_host_key_*
-rw-------  1 root  root     668 Aug  1 12:28 ssh_host_rsa_key
-rw-r--r--  1 root  root     600 Aug  1 12:28 ssh_host_rsa_key.pub
 
 
 
 
ユーザ認証用鍵セットの作成と配置
 
 続いて、SSH クライアント機にログインして、ユーザ認証用の鍵セットを作成します。ユーザ認証用の鍵のファイルには、暗号化タイプに対応した決まった名前が使われますので、ファイル名を指定する -f オプションは使わず、-t オプションのみを指定して下さい。
 
 
$ ssh-keygen -t rsa
 
 
 これにより、~/.ssh に SSH2/RSA 用の id_rsa, id_rsa.pub の合計 2 つの鍵ファイルができます。ホスト認証鍵の時と同じように、所有者・所有グループとパーミッションが正しいかどうかを確認しておきましょう。
 
 
$ ls -l id_rsa* identity*
-rw-------    1 junko    users         736 Nov  4 17:05 id_rsa
-rw-r--r--    1 junko    users         330 Nov  4 17:05 id_rsa.pub
 
 
 続いて、各プロトコルの公開鍵を SSH サーバ機にコピーします。このとき、SSH2/RSA の公開鍵 ~/.ssh/id_rsa.pub をサーバ機の ~/.ssh/authorized_keys に、名前を変えてコピーします。もちろん、これは公開鍵ですからどんな方法でコピーしてもかまいません。また、2 つ以上の公開鍵をサーバ機に保存する場合は、それぞれの公開鍵を cat などで連結します。
 
 
 
3.8.4 SSH
 
 それでは、ssh で SSH サーバに接続します。
 
 
$ ssh [-C] [<ユーザ>@]<ホスト> [<コマンド>]
 
 
 ○
 
安全のため、間違ったパーミッションでは sshd が起動しないようになっています。
 -C では通信を gzip 圧縮します。圧縮通信は ADSL 級以下の低速回線では有効ですが、LAN などの高速通信では大量のデータの圧縮の方に手間取って逆効果になる場合があるので、CPU への負荷も考慮に入れつつ適宜指定してください。さて、初めて接続するサーバの場合は、サーバの公開鍵を ~/.ssh/known_hosts に登録する際に以下のような質問をされますが、問題なければ yes と答えます。更に続いて SSH サーバが以下のようにパスフレーズを聞いてくれば登録成功です。
 
 
$ ssh  cosmos
The authenticity of host 'cosmos (X.X.X.X)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?  yes
Warning: Permanently added 'cosmos,X.X.X.X' (RSA) to the list of known hosts.
Enter passphrase for key '/home/junko/.ssh/id_rsa':
 
 
 パスフレーズによる認証ができない場合は、SSH サーバの設定により、次善の策としてパスワードによる認証をするか、そのまま接続失敗します。
 
 
$ ssh cosmos
junko@cosmos's password:
 
 
 
 
$ ssh cosmos
Permission denied (publickey,keyboard-interactive).
 
 
 ホスト認証に失敗した場合は、次のような目立つ警告が出ます。サーバの鍵セットが変わったことを知っている場合は、~/.ssh/known_host, ~/.ssh/known_host の中の、そのサーバの公開鍵だけを削除してから再度接続し、新しい公開鍵を登録させましょう。サーバの鍵セットが変わった覚えがない場合は、何物かがそのサーバに「なりすまし」ている可能性もあるので、うかつに接続せずサーバの管理者に問い合わせてください。
 
 
$ ssh cosmos
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /home/junko/.ssh/known_hosts to get rid of this message.
Offending key in /home/junko/.ssh/known_hosts:30
RSA host key for cosmos has changed and you have requested strict checking.
 
 
 さて、ログインした後はサーバのシェルとの対話になります。ログアウトする場合は exit でログインシェルを抜けます。
 ユーザ名を指定すれば、サーバに違うユーザ名でログインできます。(ユーザ名を指定しなければ、現在のユーザ名でログインを試みます)ただし、特にサーバが許している場合以外は root でのログインはできません。
 
 
$ ssh user@hostname
 
 
 また、コマンドを直接指定して、そのコマンドだけをサーバ機で実行させることもできます。次の例では、サーバのディスク容量をチェックしています。
 
 
client:$ ssh hostname df  ↓ このコマンドは SSH サーバ機で実行
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sda1              4016088   1767132   2248956  45% /
/dev/sda2             32125200   6077056  26048144  19% /home
client:$           ← このプロンプトは SSH クライアント機が出力
 
 
 SSH では、X プロトコルの転送もできます(設定により禁止することもできます)。X プロトコルの転送を使うと、SSH サーバの X アプリのウィンドウを手元の SSH クライアントのデスクトップに表示することができます。クライアントでは -X オプションの指定が必要です。
 
 
client:$ ssh -X hostname xosview
 
 
 
scp, sftp, rsync でファイル転送
 
 scp は SSH の暗号化通信を使ってファイルコピーを行う、rsh のセキュリティ強化版コマンドです。
 
 
$ scp [-p] [-r] [-C] <ユーザ名>コピー元(複数可)> <コピー先>
 
 
 
-p
コピー元のタイムスタンプ・所有者・パーミッションを保持
-r
ディレクトリの中身をまとめてコピー
-C
通信内容を gzip 圧縮 (ssh と同じ)
 
 コピー元やコピー先は [<ユーザ>@][<ホスト>:]<パス> の形式で指定します。例えば tobiume にユーザ名 sayuri でログインし、/tmp/report.txt を自分のマシンのホームディレクトリに scp する場合は次のようにします。
 
 
$ scp sayuri@tobiume:/tmp/report.txt ~
 
 
 sftp は、ftp と同様の操作感で暗号化ファイル転送を行うコマンドです。ただし、あまり高機能ではなく、sshscp の連携でファイルの確認と転送はできることもあるので、出番は多くないかもしれません。
 
 
$ sftp [-C] [<user>@]<hostname>
 
 
 
-C
通信内容を gzip 圧縮 (ssh と同じ)
 
 rsync は、内部的に ssh, scp を利用してディレクトリ以下の内容を同一にします。rsync を使ってミラーリングやバックアップをすることができます。ここまで rsh, rcp の SSH 版として ssh, scp を紹介してきましたが、ssync (?) というコマンドはないので注意してください。
 
 
$ rsync [<オプション>] <コピー元 (複数可)> <コピー先>
 
 
 
-r
ディレクトリの中身をまとめてコピー
-u
新しいファイルのみコピー (アップデート)
--delete
コピー元にないファイルはコピー先から削除
-l, -H
シンボリックリンク・ハードリンクを保持
-L
シンボリックリンクを参照するファイルに変換
-D
デバイスファイル属性を保持 (要 root 権限)
-o, -g
所有者・所有グループを保つ (-o は要 root 権限)
-p
パーミッションを保つ
-t
タイムスタンプを保つ
-a
-rlpogtD と等しい (要 root 権限)
-x
コピー元でファイルシステムをまたがった処理をしない
-n
処理内容を表示するだけで実際には処理しない
 
 「〜を保ってコピー」とは、コピー元のファイルと同じ属性をコピー先でも設定することを意味します。例えば、同じファイルを単純にrsync, rsync -og, rsync -t の 3 通りでコピーすると次のようになります。
 
 
# ssh tobiume ls -l /tmp/report.txt
-rw-r--r--    1 junko    users       12345 Sep  8 07:06 report.txt
# rsync tobiume:/tmp/report.txt .
# ls -l file1
-rw-r--r--    1 root     root        12345 Nov 11 11:11 report.txt
# rsync -og tobiume:/tmp/report.txt .
# ls -l file1
-rw-r--r--    1 junko    users       12345 Nov 11 11:11 report.txt
# rsync -t tobiume:/tmp/report.txt .
# ls -l file1
-rw-r--r--    1 root     root        12345 Sep  8 07:06 report.txt
 
 
 シンボリック属性の保持も原理は同じです。-l ではシンボリックリンクのままコピーされますが、-L ではリンクが指していたファイルとしてコピーされています。
 
 
# ssh tobiume ls -l /tmp/r*
lrwxrwxrwx    1 junko    users          10 Sep  8 07:06 readme
     -> report.txt
-rw-r--r--    1 junko    users       68030 Sep  8 07:06 report.txt
# rsync -l tobiume:/tmp/r* .
lrwxrwxrwx    1 junko    users          10 Nov 11 11:11 readme
     -> report.txt
-rw-r--r--    1 junko    users       68030 Nov 11 11:11 report.txt
# rsync -L tobiume:/tmp/r* .
-rw-r--r--    1 junko    users       68030 Nov 11 11:11 readme
-rw-r--r--    1 junko    users       68030 Nov 11 11:11 report.txt
 
 
 -H も仕組みは同様で、同じファイルの実体を 2 つの名前がハードリンクしている場合、コピー先でもこの状態を保ちます。
 ただし、処理が遅くなるので必要な場合だけ指定するのがよいでしょう。
 -D では、コピー元がデバイスファイルならば、コピー先でも同じデバイスファイルを作ります。
 -x では、コピー元のあるファイルシステム以外の部分はコピー対象外になります。例えば rsync -xr / cosmos:/backup とすると、/ と違うファイルシステムである /proc 以下はコピーされません。
 
 
パスフレーズの転送
 
 SSH を使いこなすようになってくると、1 日に何十回もの ssh, scp の度のパスフレーズの入力が面倒になります。これを解消するために、前もって ssh-agent, ssh-add というコマンドでユーザ秘密鍵を記憶させておいて、毎回の入力を省略できるようにする方法があります。
 ○
 
例えばすでに圧縮されているファイルを転送する場合などは-Cの効果はほとんどなくなります。
 まず、ssh-agent を通してシェルを起動します。
 
 
$ ssh-agent $SHELL
 
 
 次に ssh-add でパスフレーズを入力すると、パスフレーズによって復号化された秘密鍵が内部的に記憶されます。これ以降 ssh-agent が起動したシェルを終了するまでは ssh, scp などでのパスフレーズの入力を省略できます。
 
 
$ ssh-add <秘密鍵ファイル(複数可)>
 
 
 秘密鍵のファイル名は SSH1 なら ~/.ssh/identity 、SSH2/RSA なら ~/.ssh/id_rsa です。通常は SSH2 を使いますから、次のようになります。
 
 
$ ssh-add ~/.ssh/identity ~/.ssh/id_rsa
Need passphrase for identity
Enter passphrase for junko@tobiume
Identity added: id_rsa (id_rsa)
 
 
 秘密鍵の記憶は ssh-agent で起動したシェルを抜けない限り、マシンが変わっても引き継がれます。
 
 
tobiume:~$ ssh-agent $SHELL
tobiume:~$ ssh-add ~/.ssh/identity ~/.ssh/id_rsa
Need passphrase for identity
Enter passphrase for junko@tobiume 
Identity added: identity (junko@tobiume)
Identity added: id_rsa (id_rsa)
tobiume:~$ ssh cosmos
Last login: Thu Oct 11 15:09:33 2009 from tobiume.omoikane.co.jp on pts/0
Linux cosmos 2.6.31.6 #1 SMP Wed Oct 10 16:01:09 JST 2009 i686 unknown
cosmos:~$ ssh syakuyaku
Last login: Thu Oct 11 15:09:33 2009 from cosmos.omoikane.co.jp on pts/0
Linux syakuyaku 2.6.31.6 #1 SMP Thu Oct 11 19:20:34 JST 2009 i686 unknown
syakuyaku:~$
 
 
 ssh-add には、GNOME 環境用のパスフレーズ入力ウィンドウを備えたものもあります。これを使うには、ssh-agent startx として X を起動し、~/.xinitrc 内で gnome-session の前に以下の 1 行を加えます。すると X を終了するまでは全て ssh-agent のおかげでパスフレーズの入力が不要になるので X 上での作業が大変楽になります。
 
 
ssh-add ~/.ssh/identity ~/.ssh/id_rsa < /dev/null &
 
 
 この設定はデスクトップを選択するインターフェースでも行うことができます。(単独で起動する場合は ogl-umin コマンドを実行してください。)
 ○
 
グラフィカルログイン(kdm)を使用している場合は ssh-agent の実行は省略できます。kdm が ssh-agent を実行するためです。

COPYRIGHT (C)2022, オモイカネ株式会社 (Omoikane Inc.)
E-mail: info@omoikane.co.jp