SSH でよく接続が切れる場合の対処

sshd_config で

# Setting timeout of connections.
# Default is..
# ClientAliveInterval 0
# ClientAliveCountMax 3
# 2 minites (10sec * 12 times = 120 sec)
ClientAliveInterval 10
ClientAliveCountMax 12

とかして、2 分間は猶予を与えることにした。
 
– ClientAliveInterval – 生存チェックをする間隔(デフォルトでは一切チェックしない)
– ClientAliveCountMax – 生存チェックする回数(デフォルトは 3 回)
 
サーバ側がいじれない場合はクライアントサイドの ssh_config で

>

ServerAliveInterval 10
ServerAliveCountMax 12

とすれば同じ効果があるらしい。
 
参考:
– OpenSSH FAQ – 2.12 なにもしないで N 分たつと ssh 接続が固まるか、切れるかするんだけど。
– MAN – sshd_config.0
– MAN – ssh_config.0

PHP + MnogoSearch について

– FreeBSD の ports で入れられた mnogosearch が気になったので調べてみた。
– PHP4, PHP5.0.x では configure オプションで –with-mnogosearch=/usr/local みたくすれば利用可能だが、PHP5.1 からは PECL に移動していた。また Windows では PHP での MnogoSearch は非対応とのこと。
<http://jp2.php.net/manual/en/ref.mnogosearch.php>

    Note: This extension has been moved to the PECL repository and is no longer bundled with PHP as of PHP 5.1.0.
    
    Note: This extension is not available on Windows platforms.

PHP5.0.x までのバージョンについては、PHPマニュアルの User Contributed Notes を見ると例がある。
 
PEAR の Search_Mnogosearch を使うと便利そう。
 
PHP5.1 ではメンテナンスされてないようで、PECL のパッケージ一覧(pecl.php.net)で見当たらなかった。
 
代替ライブラリは Namazu かな..

rssh で ssh をよりセキュアにする

rssh(日本語) ports: shells/rssh
こういうの探してました。
 
ssh に, ユーザに応じて chroot を設定、 scp,sftp,rsync,cvs の利用について許可不許可を設定したり、umask を設定できる。
参考:
Manpage of RSSH
Manpage of RSSH.CONF
http://www.xdelta.net/wiki/FreeBSD/rssh.html

MBR のある HDD を新しくする

HDD が破損したので, そのまま作業するのも怖いので新調することにした。
具体的には、Windows XP マシンを 80GB HDD から 160GB HDD へ、完全に同じ環境のままで複製するという作業を行った。
 
作業手順は次の通り。
– ターゲットマシンの HDD をとりはずし、
– 移行作業用マシンに旧HDD,新HDD をつけて、作業用マシンの HDD で boot.
– 作業用マシンに Acronis TrueImage8(試用版) をインストール。
– 管理者権限を持つユーザでディスクのクローン作成
– PDF マニュアルを見つつ複製.
– ターゲットマシンに新HDDを取り付けて boot.
 
本来ならこれで問題ないはずだったが…
 
– 買って来た HDD (HGST) を使っていると何故か MACHINE_CHECK_EXCEPTION が出ていた。原因を調べると A8N-SLI Deluxe 特有の問題っぽい? BIOS で AMD K8 Cool’n’Quiet を Disable にしてやったら問題なく動作するように。
 
ついでに Outlook Express が起動できなくなっていたので
Outlook Express が正常に動作しなくなった場合の対処方法なんかを参考に
HKEY_CURRENT_USER\\Identities を削除したら解決。
 
TrueImage ってかなりいいかも。HDD サイズをあまり選ばないあたりとか。
全く同じ容量の HDD に複製するときは dd コマンドを使うとよい。
 
なお、Windows の環境を複製して両方利用したいときは、これだけでは SID が重複してしまいマズい状態になるため、これに加えてsysprep を使うとよい。

ssh を任意のポート、プロトコルの proxy にする

[2005-11-17] SSH 経由でネットワーク共有フォルダにアクセスする」の応用すると、次のような事例についても応用できる。
– Firewall があって ○○○ が使えないけど無理に使いたい
– クライアントからの○○の送信, アクセス元 IP アドレスをサーバの IP アドレスにしたい(例.メール送信元の隠蔽)
 
仕事で VNC 接続をサーバからにする必要があり、応用してみた(VNC over SSH using PuTTY)。
– Loopback NIC の IP アドレス(ex. 169.254.0.2)についてポート番号 5900 (VNC のディスプレイ0 のポート)への接続が ssh サーバ(ex. ssh.example.org)経由での接続先ホスト(ex. target.OCexample.com)の5900番への接続になるようにローカルポートフォワードする。こんなかんじ。

ssh -N -L 169.254.0.2:5900:target.example.com:5900 ssh.example.org

 -Nは接続後にシェルを開かないためのオプション。通常通り端末操作を行いたい場合ははずしてもよい。
PuTTY でやるなら、SSH トンネルのポートフォワーディングで
 
– 源ポート: 169.254.0.2:5900
– 送り先: target.example.com:5900
– ローカル
 
として追加しておき、ssh.example.org に接続すればよい。
ローカルで 5900 を LISTEN していなければ、Loopback IP アドレスを使う必要はないため、この場合 PuTTY では源ポートの指定はポート番号のみでよい。また ssh コマンドでは

ssh -N -L 5900:target.example.com:5900 ssh.example.org

でよい。
また、-g オプションと組み合わせて使うと、ローカルだけでなく外にもポートを開き、公開プロキシのように振舞えるようになります。

ssh -N -g -L 5900:target.example.com:5900 ssh.example.org

 
ダイナミックポートフォワーディングとローカルポートフォワーディングの
メリット、デメリットは次の通り。
 
– ダイナミック
○ 一度の設定で、サーバからアクセスできる場所であればどこにでもアクセスできる。
× SOCKS サーバとして動作するため, プロキシ接続用のクライアントソフトが SOCKS プロトコルに対応している必要がある。
 
– ローカル
○ SOCKS プロトコルに対応している必要がなく、どんなクライアントソフトでも利用できる。
× 接続先、ポート番号を逐一マッピングする必要があるため、複数箇所に対しては手間。

SSH 経由でネットワーク共有フォルダにアクセスする

SMB over SSH
 
要するに, Microsoft Loopback Adapter ドライバをいれ、そこに実際の LAN とは別のネットマスクの LAN IPアドレスを振り、そのアダプタについてポート 139 番の LISTEN をなくした上で、その IP の 139 ポートに対しての接続を全てサーバ側 LAN の指定ポートにローカルフォワードすればよい。詳細はリンク先にあります。

Java な shell を使ってみる

OOo 2.0 で知った Java 言語シェルの BeanShell を使ってみた。

bsh% import java.util.*;
bsh% System.out.println(new Date() + “: Hello World!!”);
bsh% exit();

とか。
ちょっとしたコード書くときに面白いので

$ vi /usr/local/bin/bsh
#!/bin/sh
java -cp /usr/local/bsh/bsh-2.0b4.jar bsh.Interpreter
:wq
$ chmod 0755 /usr/local/bin/bsh

みたいにしておいた。
参考:
BeanShell(公式)
BeanShell ご紹介 – オブジェクトと遊ぶ(豆蔵)