Samba over SSH

名前の通り、SSHを通して外部LANのSambaに接続する。
ポートフォワードするだけなんだけど。
実は私の環境ではSFTPがあれば、何の問題もないけど、興味本位で。
ランダムアクセスしたいときに使えるし。

環境

サーバ側は以下を想定。まぁ一般的な環境。

  • LANの中にSSHサーバがあり外部からアクセスできる。
  • そのSSHサーバから参照できるSambaサーバがある。


クライアント側はポートフォワードに対応したSSHクライアントがあればOK
今回は Ubuntu10.10 + OpenSSH を使用
Windowsでもputtyとかでいける。

方法

まず、ポートフォワーディング。
1023以下のポートを占有するので、root権限が必須。

sudo ssh -L 139:samba_server:139 ssh_user@ssh_server

samba_serverは(SSHサーバから見た)Sambaサーバのアドレス。NetBIOS名でも可。
ssh_user@ssh_serverは(ローカルから見た)SSHサーバのユーザ/アドレス。普段ログインするときに使ってるもの。

そしてアクセス。Ubuntuの場合Nautilusでそのままいける。
先ほどのシェルはSSHサーバに繋がってるのでもう一つシェルを開いて(もちろん、先ほどのsshでNオプションをつけてもいい。)

nautilus smb://localhost/share_name

と打てば、ファイルブラウザ(Nautilus)が開いてディレクトリが表示される。
share_name はSambaでの共有名。
もちろん、smbmountやsmbclientやらでも問題ない


windowsでもエクスプローラ

//localhost/share_name

と入力すればアクセスできる。

出来ない場合

以上で出来ない場合は、Sambaサーバの設定を見直すのが良いかも。
私の場合、

interfaces = 192.168.11.0/24
bind interfaces only = yes

コメントアウトしてsamba再起動でアクセスできた。
実はよく分かってないのでもう少し要調査。

問題点

問題が2つほど。

  • root権限が必要。
  • ローカルのLAN(意味かぶっとる)のSambaにアクセスできない。

一見ローカルのポートを変えれば全て解決しそうな気がするが、

ssh -L 8139:samba_server:139 ssh_user@ssh_server
nautilus smb://localhost:8139/share_name

と入力しても何故かエラー(Connection time out)。
これについてはよく分からない。