OS構成としては、サーバー側がCentOS4、クライアント側がWindows98/Me/2000/Xp、サーバー側の文字セットとして標準的なUTF-8を想定し、フリーのソフトウェアで環境を構築するという条件で考える。
まず、必要なソフトウェアについて。
Windows 側クライアントとして、他にもあるかも知れないが見つけた範囲では、 TeraTermPro を平田豊氏が改良されたUTF-8対応版か、 Poderosa の二択である。
いろいろ試したので、他のツールについても書いておく。
・SSH SecureShell…非商用使用に限り使える無料版が存在するが、日本語非対応。現在はSSH Tectiaという後継製品となっている。
・Putty…本家は日本語非対応。日本語対応版、ごった煮版、Putty JP Xtransと、日本語化を含めた改良がされているようだ。しかし残念ながら Me ではダイアログの文字が化けてしまう。情報を頼りに、puttyjp.exe, puttyjp.lng を putty.exe, putty.lng にリネームし、putty.lng をエディタで開き [Japanese] セクションの '_FONTNAME_=MS UI Gothic' を Win98系で存在するフォント名に変えてみたがだめだった。XP の msgothic.ttc をコピーしてみたが、同名のファイルがOSに常に掴まれているため置き換えできができなかった。
・Cygwin…Windowsでクライアントを使いたいので Cygwin を導入するのは本末転倒だが、 bash で LANG=Ja_JP,UTF-8 としても無駄なようだ。
結論としては、 Poderosa がわりと良いんではなかろうか。複数の端末を同時に開けられるし、公開鍵の生成もできる。Cygwin の端末としても使える。ただし注意点が2つ。まず、 ssh2 の鍵は 2048 bit までのようだ。ssh-keygen でつくった 4096 bit の DSA 鍵は使用できなかった。Poderosa 自身の生成機能でも最大値は 2048 だ。次に、cygwin 端末として使う場合 cygwin1.dll が poderosa.exe のあるフォルダの下の Cygterm/ フォルダ内に必要だ。 c:/cygwin/bin/ にパスを切ってもよかろうが、 cygwin の他のバイナリが意図せず動作するなど副作用が嫌なので、 dll をそこに放りこんだ。
次に、sshd サーバーの設定。/etc/ssh/sshd_conf に対する初期設定からの変更点。
試行錯誤するので、最初に:
LogLevel DEBUG
としておいたおかげで、 /var/log/secure をみて、パーミッションの問題で認証失敗しているなど情報が得られた。用が済めばコメントアウトすればよい。
SSH2 のみを許可:
Protocol 2
SSH1 での RSA1 接続を禁止し、 SSH2 での RSA/DSA 接続を許可する:
RSAAuthentication no
PubkeyAuthentication yes
(コメントアウトしても動いたが、トラブルになった場合は):
AuthorizedKeysFile &h;/.ssh/authorized_keys
としておけば、接続許可したい各ユーザーの公開鍵情報一覧がどのファイルに入っているか、明示できるだろう。
rhost 関係、サーバー側の known hosts 、ホストベースでの接続を禁止:
RhostsRDSAuthentication no
HostbasedAughentication no
IgnoreUserKnownHosts yes
IgnoreRhosts yes
公開鍵認証のみ許可したいので、パスワード認証を禁止して空のパスワードでの接続も禁止:
PasswordAuthentication no
PermitEmptyPasswords no
次に、サーバーに接続したいユーザーの鍵に関する設定の例。
1. そのユーザーでサーバーにログインして、ホームディレクトリの直下に .ssh/ ディレクトリを作成して、パーミッションを 0700 にする。
2-a. クライアント側で鍵の生成が出来ない場合。(TeraTermPro の場合。)
接続したいユーザーでサーバーにログインして、
ssh-keygen -b 4096 -t dsa
などどして、公開鍵と暗号鍵をつくる。保存先は .ssh/ 内が初期位置なのでそのままでよい。パスフレーズを聞かれるので、最低6文字以上の一意の文字列を考えて入力する。空白文字などの記号も使用可能だ。クライアントからログインするときは、このパスフレーズをパスワードとしてログインすることになる。
上の例では公開鍵として id_dsa.pub が、秘密鍵として id_dsa ができる。このうち、秘密鍵はクライアント側に何らかのセキュアな手段で移動させ、公開鍵は .ssh/ ディレクトリ内に authorized_keys というファイルを作ってそこに追記する。公開鍵は1行で1ユーザー分の認証情報になっており、当該ユーザーとしてログインを許可したいユーザーの公開鍵をこのファイルに追記していく形式となる。ちなみに authorized_keys のパーミッションは 0600 となる。
2-b. クライアント側で鍵の生成が出来る場合。(Poderosa の場合。)
クライアント側で鍵を生成する。生成した公開鍵をサーバーのログイン許可したいユーザーの .ssh/ ディレクトリ内の authorized_keys というファイルに追記する。
3. ssh クライアントで接続を開始する。
・相手のホスト名は、サーバー側のホスト名または IP アドレス。
・プロトコルは SSH2 。
・ポートは SSH の 22番ポート。
・ユーザー名には、サーバー側に存在するログインしたいユーザー名(当たり前だが .ssh ディレクトリなどを作って準備したユーザーの名前だ)を入れる。
・認証方法は、「公開鍵」方式。
・パスフレーズは、鍵を生成したときに決めたものを入れる。
・鍵ファイルは、サーバーで生成しクライアント側に持ってきた(または、クライアントで生成した)鍵のうち、秘密鍵の方のファイル名を指定する。
以上で、 ssh2 で公開鍵を用いたログインができるようになる。
知人のサイトでLinuxの記事をみるうちに触発され、ひさしぶりにOSを導入してみた。
あまっている検証機は、PentiumPro200MHzが2個載っている古いタワー型PCだ。電源を入れてみたら、まだなんとか動くらしい。SCSIの4GBのHDDが1個、2GBが1個、ATAPIのCDROMドライブが1台、ビデオに初代1MBのMilleniumがささっている。
インストールに2時間半、ネットごしのアップデートに2時間かかった。XGAサイズのGNOMEのデスクトップの上を、マウスカーソルが飛び飛びにワープしている。重い…はげしく重い。あげくに最初繋いでみたマウスが寿命でいかれてしまったらしい。カーソルがはげしくランダムワープする上にでたらめにあちこちクリックしまくってしまう。カールさんの壊れたPCを修理したものを弟が使っているのだが、それのマウスを借りてようやく導入が完了した。自分のマウスは壊れたものをのぞいて全てUSBなので使えなかったからだ。
日本語入力モードにはいる方法がわからない。しばらくgoogleで調べてみつけた。RHL系はshift+spaceでしたか。そういえばそうだった気もするが、すっかり忘れていた。
OpenOfficeのWordが縦書きに対応しているかが気になった。以前(RHL7.3の頃)は、横書きしかなかったが、調べてみるとページ設定で設定できるようになっていたので感動した。これで脚本が書けるようになったじゃないか…と、ためしに用紙横置き縦書きに設定して、日本語で「これはテストです。」と打ってみたら、文字が化けて表示された。横書きに設定変更すると正常に表示される。縦書き時のフォント処理にまだ問題があるらしい。残念だ。縦書きで遜色なく文章が打てるようになるまでに何年かかるのだろうか。
…それはさておき、OS自体に関しては安定して動作しているようだ。知人サイトの記事を参考にWebDAVとSVNを試してみようと思っている。それと、blogのローカルテスト環境もつくろうと思う。そのために入れてみた。
ちなみに、この記事はPentiumPro機で入力されたものだ。
関東在住の友人から夜間電話があり、彼がホームページを作りかけていて、萌えるカウンターなるものの設置を試みていることがわかった。
自宅にサーバーを立てているそうで、そのサーバーを用いて、ホームページにカウンターを設置しようとしているそうで、動作確認でお手伝いしたが、カウンタ値が更新されない。プログラマー畑というよりサーバー系の人なので、今回 CGI を動作させる部分でうまくいかないようだった。
彼が、明日の仕事にそなえて就寝した頃にふと、この blog に設置してみようかと思い立ってとりつけてみた。
画像には、日下こかげさんの「OSたんカウンタ」をkurageさんが縁取り、透過処理されたものを使わせて頂いた。
カウンターのコードは実は、 rinn さんの rnote 用サンプルプラグインそのままだ。文字列を出力している箇所をちょっと変えただけだ。(笑)
ひさしぶりにプログラミング(というほどのもんじゃないが…)をしてみて、書き方を忘れかけていたことと、rnote のカスタマイズのしやすさを感じた。思った処理が実現しやすい。C でも PASCAL でも、 Algol 系の言語経験が少しあれば、RAD 的はやさでサイトを構築できるんではないだろうか? MOVABLETYPE などの大がかりな blog ツールでこんな軽快さが得られるかどうか…。素晴らしいツールだ。
ちなみに、深い意味なく設置してしまった画像カウンターだが、このような画像になじめば自分も「萌え」というものが理解できるようになってくるのだろうか…。
なんとなくだが、なにかが音を立てて崩れていった気がするのは気のせいだろうか。
- 1: 冬星 (04/04 12:53)
- moonfishさんの「ねこみみカウンター改」の画像も出てくるようにしてみました。クライアント側にスクリプトを用意していないのでとりあえず出るだけです。ランダムに画像が選ばれるので何度か更新すると出てくるでしょう。
PI.さんのところで、XM6のソースが公開されたので、これはありがたい、ぜひ参考にとビルドしてみた。
ドキュメントによると「コンパイラとして、Microsoft Visual C++ .NET 2003が必要、アセンブラとして、NASM(Netwide Assembler)が必要」とあるが、VC6しかもっていないので少し作業が必要だった。以下メモ。
---
#2005-1-29加筆修正。
[VC]
・「WIN32アプリケーション」を選んで空のプロジェクトを作り、ファイルを追加。
・プロジェクトの設定を開いて、一般タブの"Microsoft Foundaiton Class"のところを、"共有DLLでMFCを使用"にする。(初期値では"MFCを使用しない"になっている。)
・プロジェクトの設定を開いて、"プリプロセッサの定義"に、"_WIN32"を追加する:VC6で自動追加される定義は、"WIN32,_WINDOWS,_MBCS,_AFXDLL"(共通)、"NDEBUG"(リリース版)、"_DEBUG"(デバッグ版)。
・プロジェクトの設定を開いて、XM6.vcprojの中身を参考に、リンクするlib に"imm32.lib winmm.lib version.lib dinput.lib dsound.lib dxguid.lib obj/core_asm.obj obj/mfc_asm.obj obj/rend_asm.obj obj/star.obj"を追加。
・VCメニューの、"ツール/オプション/ディレクトリ/インクルード"のところで、"C:/DXSDK/INCLUDE"など環境に応じてDirectXのインクルードファイルの場所を追加。
・mfc_tkey.cpppのテーブルCTKey::KeyTable[KeyMax]で"VK_OEM_ほにゃらら~"などが未定義といわれるので、VCメニューの、"ツール/オプション/ディレクトリ/インクルード"で、新しげなプラットフォームSDKのインクルードディレクトリ"C:PROGRAM FILES/MICROSOFT PLATFORM SDK FOR WINDOWS XP SP2/Include"をVCのINCLUDEより上に追加:VC6のwinuer.hで"VK_OEM_"ではじまる定義は"VK_OEM_CLEAR"1つしかないので他は全て未定義エラーが出る。SDKのwinuser.hで追加されたもののようだ。
・fdd.cppの、クラスメソッドFDD::WriteP(),FDD::GetName(),FDD::GetPath()は、戻り値をもたない(void)のに戻り値を返すよう記述されておりエラーになる。return foo(); -> foo(); のように処理だけ行って値は捨てるように変更。
・mfc_sub.cppで、クラスメソッドCSubWnd::OnActivate()が、同様に戻り値をもたないはずなので、ベースクラスCWnd::OnActivate()の呼び出し結果を return しているのを、ベースクラスを呼び出すだけに変更。
・filepath.cppの、::GetFileTime()の第一引数を(LPVOID)にキャスト。
・memory.cppの、Memory::ReadOnly()のif文の式、"if (mem.table[index] != this)"がエラー(C2446)になるので、"((Memory*)mem.table[index] != this)"と明示してやる。
・mfc.hの、先頭で WINVER を #define している直後で、_WIN32_WINNT を(WINVER) と同じ値に定義。
[NASM]
・ドキュメントによると、nasmの版は0.98推奨とあるが、本家サイトでは入手不可能。本家では 0.98bf-win32(一番古い)~0.98.39(最新)までが入手可能。
・yosirin-hello さんのサイトで、「うるり」さんがオリジナルの0.98に対してSSE2対応の改良をおこなった版も紹介されており、入手可能。
・しかし、いずれの版でも、star.cから生成したstar.asmでエラーが出る。
・うるりさんの版を用いた場合、107行目がエラーになりnasmが通らない。"TEST [__BUSERR_STAT],00008000h" と出力されているところがそうで、オペレーションサイズを指定してやる必要があるので、"TEST long[__BUSERR_STAT],00008000h" と修正してnasmを通すことでオブジェクトが無事に出来る。
以上の修正で、動作を確認。今のところ色々触ってみているが問題はない。
- 1: PI. (01/28 19:35)
- 詳しい情報ありがとうございます。参考にさせて頂きます。
読んでいて少しわからないのが
・_WIN32を追加(自動で追加されるのでは?)
・VK_OEM_ほにゃらら~などが未定義(具体的には?)
・mfc.hに、#includeを追加 (何をincludeしてたらよくなったのか?)
あたりです。このあたりを解説いただければ助かります。
それとNASMのアセンブルですが、手元の0.98でもアセンブルできませんでした(笑)
Star.cが古かったようです。次回のバージョンでは差し替えておきます。 - 2: 冬星 (01/29 16:36)
- ソース公開ありがとうございます。参考になります。CPU内部の動作から表現されているのに関心しました。ハードウェアの知識が生半可じゃあ作れないですね…。
ご質問の件(+memory.cppの件など漏れ)上に加筆しました。mfc.hのinclude云々はゴミ消し忘れです。
今回変更点多いですね。(おつかれさまです…。)ソースも大分変っていて、目が回りました。(@o@)
管理者用の画面に「rNoteの動作設定」がついて、If-Modified-Sinceに応答するか、ページキャッシュを生成するか、キャッシュするページ数など設定ができるようになってなんだかかっこいいです。
今回の目玉は、高速化と携帯電話対応のようです。ページの内容をキャッシュするようになったので、動的生成の負荷が減るのが期待できそうです。あと命令の追加などいっぱいあるのでまた落ち着いて見てみようと思います。(^^
今後の実装予定も、たくさんありますね。こりゃ大変そう…。XML-RPC、BBSへのファイルアップロード機能とお絵かき掲示板機能、認証画面あたり、次回以降に実装されるのがはやくも待ち遠しいです。
この記事のリンク元 | 1 |