たまには情報らしい話でも。Debian/GNU Linux(Sarge) を前提としています。他は知らん。
〜Samba over SSHの実現方法の紹介〜
OpenSSHを用いたポートフォワーディングをご存知でしょうか。動作の仕組みなどの解説は他のサイトに譲るとして、ローカルの100番ポートへの接続をサーバ(server_machine)の200番ポートにフォワーディングしてくれよ、とログインできるマシン(forward_machine)にお願いするには、以下のように指定します。
$ ssh -L 100:server_machine:200 user@forward_machine
この指定だとローカルのマシンが複数のインタフェースを持っていても全てのアドレスのポートがフォワーディングされてしまい少々不便でした。そこでclient1が指すアドレスの100番ポートへの接続のみをフォワーディングするように指定します。
$ ssh -L client1:100:server_machine:200 user@forward_machine
この機能とIPエイリアスを併用し、既存のSambaサーバにはある一つのアドレスへの要求のみを担当させ、もう一つのアドレス(IPエイリアスで割り当て)への接続はフォワーディングしてしまう、という芸当ができます。マシン1台で、既存のSambaサーバと別のマシンで稼動しているSambaサービスを同時に利用できるわけです。
ただしSargeではOpenSSHが古い(3.8.1p1)のでローカル側のアドレス指定ができません。今回この機能は必須なのでまずはOpenSSHのコンパイルを行います。使用するバージョンは4.1p1です。ディレクトリの名前などは環境に合わせて適宜読み替えてください。
# aptitude install libcrypto++5.2 $ wget ftp://ftp.iij.ad.jp/pub/OpenBSD/OpenSSH/portable/openssh-4.1p1.tar.gz $ tar -xzvf openssh-4.1p1.tar.gz $ mv openssh-4.1p1 ~/usr/src $ cd ~/usr/src/openssh-4.1p1 $ ./configure --prefix=/home/username/usr $ make install
さらっと書きましたが実はこうなりません。私の場合はconfigureで libcryptoがないと言われます。探してみると /usr/lib/libcrypto.so.0.9.7が居ますので
# cd /lib # ln -s /usr/lib/libcrypto.0.9.7 libcrypto.so
と、シンボリックリンクを張ると通ります。本来はconfigureを実行するときに /usr/libをライブラリのパスに指定すべきですかね。またmake installが途中で止まりますが、生成されたsshのバイナリだけを ~/usr/binなどにコピーして、パスを通せば使えます。かなり適当ですみません…。
(2006年2月22日加筆)
make installが途中で止まってしまう問題は、sshdのPrivilege Separetionという機能を無効にすれば解決するようです。一般ユーザはsshd使わないので問題ありませんね。無効にしてもインストールスクリプトが /var/emptyを作りに行って失敗してしまうので、Makefileの該当する行を削るか、あらかじめディレクトリを作ると良いでしょう。
# mkdir /var/empty $ ./configure --prefix=/home/username/usr --without-privsep-user
次に Samba側の設定を変更します。/etc/samba/smb.confに以下のように書いて、一部のインタフェース(この場合はeth0)のみlistenしてもらいます。
bind interfaces only = yes
interfaces = eth0
続けてIPエイリアスの設定です。とりあえず一つ割り当てます。
eth0や別のマシンとかぶらないアドレスならなんでもOKです。
# ifconfig eth0:1 192.168.1.2 up
最後にフォワーディングを行います。どこかにSMBサービスを提供しているマシン(samba_serverとする)があるとします。
# ssh -g -L 192.168.1.2:139:localhost:139 user@samba_server
エクスプローラなどで \192.168.1.2と打てば、相手側(samba_server)の共有ディレクトリなどが見えるはずです。見えない場合は相手側(samba_server)のSambaサーバがlocalhostへの接続を処理するようになっていない可能性があります。Sambaの設定を確認して適宜、localhostの部分を書き換えてください。
以上です。ご意見、ご指摘があればお願いします。
< | 2006 | > | ||||
<< | < | 02 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | - | - | - | - |
合計:
本日: