/usr/sbin/sshdがOpenSSH 5.2と非常に古く、イマドキのSSHとの鍵交換がうまくいかずtelnetログインすらできないのが面倒なので、Dropbearに替えてしまいます。
アーカイブはbzip2形式ですが、tar xpf dropbear-2022.83.tar.bz2で展開できます。default_options.hを以下のように修正し、
- #define DROPBEAR_X11FWD 0 → 1
- #define SFTPSERVER_PATH "/usr/libexec/sftp-server" → "/usr/libexec/openssh/sftp-server"
X11 forwardingとsftpを利用可能にしておきます。configure時にzlibがdeflateに対応しないと言われてしまうので、./configure --disable-zlibで回避します。あとはmake; make installで/usr/local/sbin, /usr/local/bin, /usr/local/share/manにファイルをインストールします。
/etc/sshにはssh_host_key(RSA1), ssh_host_rsa_key(RSA), ssh_host_dsa_key(DSA)がありますが、これは無視して/etc/dropbearに鍵を作ります。Ed25519鍵があれば十分なのでmkdir /etc/dropbear; cd /etc/dropbear; /usr/local/bin/dropbearkey -t ed25519 -f dropbear_ed25519_host_key | grep ssh-ed25519 > dropbear_ed25519_host_key.pubとして作成します(公開鍵は不要ですが念のため控えておきます)。もちろん、必要に応じECDSA鍵などを用意しても良いでしょう。
動いているsshdをkillで殺した後、/usr/local/sbin/dropbear -wでdropbearを起動し、外部からSSHログインが可能なことを確認しておきます。
sshdの起動は/etc/rc.d/init.d/sshdで行われているので(/etc/rc.d/rc?.d/{K25,S55}sshはこのファイルへのシンボリックリンクです)、chmod -x /etc/rc.d/init.d/sshdとでもして起動しないようにしておきます。本来ならきちんとした起動用スクリプトを書かないといけないのですが、今回はecho "/usr/local/sbin/dropbear -w" >> /etc/rc.localとしてお茶を濁します。流石にこの時代ともなるとデフォルトでtelnetdが上がっていることが無い以前に、/etc/inetd.confすらありません。
本題とは離れますが、/etc/sysconfig/i18nのLANG="ja_JP.UTF-8"を"ja_JP.eucJP"に変更し、システムのロケールをEUC-JPにしておきます。
実はFUJIMI-IM/sj3と原典(sj3-2.0.1.20)を同時に動かせるLinux環境を構築したいと思ってあれこれ試しているのですが、
- pts(4)は古い/dev/ptyXXであること(Vine 2.5は対応、3.xは未確認、4.x以降の/dev/ptsは未対応)
- EUC-JPロケールに対応すること(Vine 4.xまではデフォルトがEUC-JPロケール、5.x以降はUTF-8なので別途設定が必要)
- Imake等の古いユーティリティに対応すること(Vine 5.xはここで引っかかります)
- FUJIMI-IM版はgcc-4以降であること(Vine 2.5(gcc-2.95), 4.x(gcc-3.3)はここで引っかかります、Vine 5.2(gcc-4.1.2)ではビルドできましたがこれより前のgccについては不明)
- 原典は32bit環境のみ対応(関数ポインタをintでキャストしている箇所があるため64bit環境では動きません)
を全て満たす環境というのは厳しそうです(特にpts(4)については、改造しない限り動きません)。今でもpackagesがあるくらいなのでNetBSDをLinuxの代わりに使えるのではないかとも思ったのですが、OS本体はともかく古いpackagesが残っていないという問題があるので(git等をtar ballからビルドすれば良いのでしょうが、そのtar ballをダウンロードする手間も考えないといけません…古いOSではhttpsが通らないこともあります)これもこれで難しそうです。55.1kg(19:05)