Tera Term Pro と TTSSH の概要
|
■ TeraTerm
Pro
Tera
Term とは T.Teranishi こと寺西高氏によるフリーのターミナルエミュレータで、VT100をはじめ各種のターミナルモードをサポートする。プログラムがコンパクトで基本機能がしっかりしているだけでなく、日本語版拡張モジュールやSSH拡張モジュールなどが発表されているため、Windows用ターミナルエミュレータとして人気が高く、リモートログオン用の標準ツールとして広く利用されている。なお
TeraTerm は Vector や窓の杜等にフリーウェアとして登録されており、自由にダウンロードして使用できる。詳細はTeraTerm Home Pageを参照のこと。
ログオンプロトコルは標準では
Telnet であるが、後述するSSHモジュールを組み込むことによって、SSH対応のセキュアターミナルとして利用できる。以下にTTSSHを組む前の英語版
TeraTerm のログオン画面を示す。ここでは選択できる接続プロトコルが
telnet のみであることに注意。

■
TTSSH
TTSSHは
TeraTerm のSSHプロトコル対応版である。初期状態ではログオン方式を選択できるようになっているが、サーバ側の
sshd の設定によって、ログオン方式を一意に決める(たとえばRSAのみ)ことができる。以下に日本語版SSH拡張モジュールを組み込んだ
TeraTerm のログオン画面を示す。選択できるサービスとしてSSHがあることに注意。

TTSSHを使うには、サーバ側では
sshd 設定とペアキーの作成、クライアント側では鍵ファイル定義および
Windows 環境変数の設定が必要である。いずれもむずかしい作業ではないが、sshd
の設定に関しては認証方法の決定やペアキーの生成などに関して一定の知識が必要である。また、サーバを
iptables で要塞化しているのなら、SSHで通信ができるように22番ポートを開ける必要があるのは言うまでもない。
■ Tera Term Pro と TTSSH のインストール
1.インストールとモジュールの組み込み
SSH対応版の
TeraTerm をインストールするには、まず TeraTerm
Pro2.3 のインストールが必要である。次いでTTSSH拡張モジュールをインストールし、最後に日本語版拡張モジュールをインストールする。
TeraTerm
Pro 自体のインストールはインストーラの指示に従って実行すれば特に難しいことはない。TTSSHモジュールの組み込むには、TeraTermPro
をインストールしたディレクトリの中で展開し、できたフォルダの中にあるファイルをインストールディレクトリにコピーする。TTSSHは拡張DLLの形で供給されているので、起動時に同じディレクトリの中にDLLがあれば、自動的にSSH拡張モジュールを読み込む。また、日本語版拡張モジュールをインストールするには、同じように
TeraTermPro をインストールしたディレクトリの中で展開し、できたフォルダの中にあるファイルをインストールディレクトリのファイルに上書きすればよい。いずれの詳細も
Readme に書いてあるので、付属のドキュメントをよく読むこと。
2.Windows
環境変数の設定
TeraTerm Pro をインストールしたら、かならず
Windows 環境変数を設定する。これを設定しないと TeraTerm
は起動しないので気をつけること。筆者の経験では「インストールした
TeraTerm が起動しないんですけど…?」と問合せてくるケースのほとんどが環境変数の設定落ちである。
環境変数の設定の手順は次のとおり。
1.「マイコンピュータ」アイコンを右クリックしてメニューから「プロパティ」を選択し、システムのプロパティを表示 2.「詳細」タブを選定 3.「システム環境変数」の「新規」をクリック 4.入力ボックスの変数名に
TERATERM_EXTENTIONS を、変数値に 1 を入力してOKする

1.sshd_config
サーバ側で最初に実行するべき作業は、/etc/ssh/sshd_config
の編集である。RedHat 系では、インストール直後からSSHが使えるようになっているが、初期状態の
sshd_config はほとんどの設定項目がコメント化されており、そのままでは安全で使いやすい環境とは言えない。したがって、最初にデフォルトの設定を使いやすくセキュアな環境に直しておく必要がある。(現在、SSHに関しては新山祐介氏による日本語マニュアルが存在するので、一読をお勧めしたい。)
以下のフォーマットを見ればわかるように、sshd_config
の設定スタイルは、テンプレートから必要な項目についてコメントを外して行き、定数を設定するか
yes/no
を設定するものである。以下に標準的な設定例を示す。
設定
|
意味
|
#
$OpenBSD:
sshd_config,v 1.56 2002/06/20 23:37:12 markus
Exp $ # This is the sshd server system-wide
configuration file. See # sshd_config(5)
for more information.
# This sshd
was compiled with PATH=/usr/local/bin:/bin:/usr/bin
#
The strategy used for options in the default
sshd_config shipped with # OpenSSH is
to specify options with their default value
where # possible, but leave them commented.
Uncommented options change a #
default value.
Port 22 Protocol
2,1 ListenAddress 192.168.1.200 #ListenAddress
::
# HostKey for protocol version
1 HostKey /etc/ssh/ssh_host_key
#
HostKeys for protocol version 2 HostKey
/etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key
#
Lifetime and size of ephemeral version 1
server key KeyRegenerationInterval 3600 ServerKeyBits
768
# Logging #obsoletes QuietMode
and FascistLogging #SyslogFacility AUTH SyslogFacility
AUTHPRIV LogLevel INFO
# Authentication: LoginGraceTime
120 PermitRootLogin no StrictModes
yes RSAAuthentication yes
#PubkeyAuthentication
yes AuthorizedKeysFile .ssh/authorized_keys
#
rhosts authentication should not be used RhostsAuthentication
no:
|
22番ポートを指定 プロトコルバージョン2,1 192.168.1.200
のみ接続許可
ホストキーファイルの指定(ver.1
用)
RSAキーファイルの指定(ver.2
用) DSAキーファイルの指定(ver.2 用)
キーの再生成時間を6時間とする キービット数を768に指定(ver.1
用)
ファシリティをAUTHPRIVに指定 ログレベルをINFOに指定
ログイン待ち時間を2分に指定 root
によるログインを禁止 厳格なチェックモードに指定 RSA認証を可とする(ver.1
用)
認証用キーファイルの指定
rhost
の認証を拒否
|
設定ファイルの編集が終了したら、sshd
を再起動して設定を反映させる。
/etc/rc.d/init.d/sshd
restart
設定上の重要なポイントは接続方法を一つに決めておくことで、特別な事情がないかぎり、RSA+パスフレーズのみで認証を行うのが確実である。上記設定ではクライアントが
windows マシンで TeraTerm による接続を前提にしたものなので、RSAのみとしている。またメンテナンサはIPアドレスで指定(この例では192.168.1.200)しておく。これを指定しないとすべてのホストがログイン可能になるので気をつけること。なお、ここでは
root でのログインを許可しない設定にしてある。
また、少々注意が必要なのだが、上記の設定ではパスワードによるログインを許可していない。繰り返しになるが、これはあくまで
TeraTerm を対象とした設定だからである。しかし、この設定では
Linux ホスト同士で scp によるファイル転送を行いたい場合、同じルールが適用されてパスワードログインできずに困ることがあるかもしれない。もし、SSHサーバ上で一時的にでも
scp を使う可能性があるのなら、TeraTerm 用の sshd_config
と初期状態の sshd_config をそれぞれ別の名前(たとえば
sshd.config.tera および sshd_config.scp のような)で用意しておくとよい。scp
が必要になったら、scp 用のコンフィグを運用版の sshd_config
に上書きコピーして sshd を再起動する。この手法はログファイル管理サーバへログを
scp で飛ばすようなとき重宝するはずである。
2.ペアキーの作成
認証用の公開鍵と秘密鍵を作るには
ssh-keygen コマンドに暗号化オプションを指定して実行する。ユーザ自身にパスフレーズを入力させてペアキーを作成することもしばしば行われるが、ここでは
root でログインして適当なパスフレーズを割り当てるものとする。ただし、root
のままではユーザ用に鍵ファイルを作ってもアクセスできないため、SSHでログオンさせるユーザに
su したのち、ユーザのホームディレクトリへ移動し、そこにペアキーを作成する。(鍵ファイルはユーザのログオン先となるホームディレクトリの
/.ssh ディレクトリに作らなければ意味がない。) 以下にユーザ名を
USER とした場合のコマンドオペレーションを示す。
#su USER
$cd /home/USER
$ssh-keygen -t rsa1
Enter file in which to save the key (/home/USER/.ssh/identity):
Created directory 'home/USER/.ssh'.
Enter passphrase (empty for no passphrase): ********** Enter same passphrase again: **********
Your identification has been saved in /home/USER/.ssh/identity.
Your public key has been saved in /home/USER/.ssh/identity.pub.
The key fingerprint is:
d1:54:1c:b0:d4:c8:e0:3e:7a:34:f1:75:41:ba:35:1f USER@linux
$
| 以上のオペレーションによってUSER用の鍵ファイルが
/home/USER/.ssh/ の中に作成される。初期状態では以下の2つのファイルができているはずである。
identity
クライアント用秘密鍵(USER専用) identity.pub サーバ用公開鍵
次にユーザの入力したパスフレーズを認証するため、/home/USER/.ssh
に
authorized_keys を作る。このファイルは identity.pub そのものであり、名前を変えて
cp し、パーミッションを設定するだけでよい。
$cd
/home/USER/.ssh $cp identity.pub authorized_keys $chmod 600
authorized_keys
|
パーミッションは最終的に次の形になっていることを確認すること。(644および600)
authorized_keys -rw-r--r--
identity -rw-------
identity.pub -rw-r--r--
最後に
TeraTerm 用(クライアント用)の identity ファイルをユーザに渡す。メールの添付ファイルとして送ることが多いが、部署内であればDOS形式のフロッピィディスクに入れて直接手渡した方がセキュリティ上安全である。
ユーザはフロッピィの
identity ファイルを、端末となるクライアントマシンの TeraTerm をインストールしたディレクトリにコピーする。TeraTerm
にとってはこのファイル名は何でもよいので、ユーザがそれと識別できるのであれば、鍵ファイルであることがすぐに悟られないような名前を変更しておくとよい。SSHでログオンする場合はパスフレーズを入力し、鍵ファイルを指定してOKを出す。(ここではユーザが
identity の名前を for_USER と変更したものとして示す。)

■ パケットの SSH トンネリングと
Tera Term Pro
近年、セキュア通信の必要性に対する認識が一般化するとともに、パケットトンネリング技術に関心が持たれるようになってきている。トンネリング技術とは一言で言って、パケットを別のプロトコルによってカプセル化することである。TeraTermにはポートフォワード機能がついており、これを利用してパケットをSSHポート(22)に転送し、SSHトンネリングを実現することができる。ここでは
http を SSH でトンネリングする例を紹介する。
1.TeraTerm
の設定
Setupメニューの[SSH Fowarding...]を選択すると次のようなプルダウンメニューが現われるので、SSH転送を選択する。
「追加」を押し、転送したいポートを入力する。ローカル側の指定はユーザポートであればなんでもいいが、使用中のポートは避けること。サーバ側のポートは
http の80番を指定する。下図では検証環境での設定なのでホスト名だけが記入されているが、名前解決の必要なネットワークからリモートアクセスするならフルドメインによる指定が必要である。

設定が終了したら、再びメイン画面の「Setup」から「Savesetup」を選択し、設定を
ini ファイルに保存する。基本的にこれだけでよい。
2.接続実験
上記の設定が終了したら
TeraTerm を一度終了させ、ふたたび起動してトンネリングしたいサーバに接続する。「SSH転送」を覗いて設定が入っていることを確認できたら、ブラウザから次のURLにアクセスする。
http://localhost:12080
慣れないうちはブラウザに自機のポート番号を入力することに「?」があるかもしれないが、トンネリングは次のような手順を踏むものだと考えていただきたい。
自機12080→自機22 ---------------------------- ホスト機22→ホスト機80
すなわち、ターミナルのフォワード機能を使って、間接的にホスト機の80番ポートを指定していることになる。したがってコマンドに指定したホストの指定したポート番号に接続できれば接続実験は成功ということになる。このとき
Windows 側でDOSプロンプトを開き、netstat コマンドによって
ESTABLISH な接続を調べてみるとよい。ローカル側が12080でセッションを開いていることがわかるはずである。
注意
: くどいようだがこのセッションはSSHによってトンネリングされたものである。したがって、TeraTerm
を終了すると必然的に転送ができなくなり、セッションが落ちてしまうので気をつけること。筆者の経験だが、ユーザがSSHトンネリングでWEB接続したのち、何気なくターミナルを終了させてしまい(当然接続は切れる)、あらためて非セキュア接続で再開しているという笑うに笑えないサポート案件があった。このようにターミナルの機能でトンネリングを行う場合は、セッション中にうっかりターミナルを落とさないようユーザに注意を喚起する必要がある。以上、老爺心まで。
|