Grid Datafarm: Gfarm over SMB over SSH [Japanese]

文書集 > ユーザーズマニュアル > SSH のポート転送で Samba にアクセス

# SSH のポート転送を用いて Samba にアクセスする

## 1. 概要

SSH サーバから見えるネットワーク上に Samba サーバが存在し，その SSH サーバに SSH でアクセスできるならば，その Samba サーバにアクセスすることができます． つまり，Windows マシンから，通常ではアクセスできない環境からでも，VPN を用いずに SSH を用いて，防火壁やインターネットを越えて，Windows のファイル共有サービスや Samba にアクセスすることができます． このために SSH のポート転送の機能を用います．手順は簡単です．

### 構成例１

- Windows クライアント : 勤務先，モバイルなど
- SSH サーバ : 自宅 BB ルータポート転送経由 (or DMZ 環境)
- Windows ファイル共有 : 自宅内プライベート

たとえば上記の構成であれば，出先から自宅の Windows のファイルにアクセスできます．

これを応用した例として，外部からはアクセスできない Gfarm の環境に，Samba と SSH サーバを置くことで，外部からアクセスすることもできます．
Samba を経由して Gfarm にアクセスする方法は，

- システムコールフックを用いて (まずはこちら)
- gfarm2fs を用いて

をご覧ください．

### 構成例２

- Windows クライアント : インターネット越し，自宅 BB ルータ内, モバイルなど
- SSH サーバ : 会社(内外)ゲートウェイ
- Samba サーバ : 会社内プライベート
- Gfarm : 会社内プライベート

### 構成例３

- Windows クライアント : 会社防火壁内，インターネットはプロキシサーバ必須
- 社内プロキシ : SOCKS/HTTP プロキシ (プロキシを使って外部へ SSH)
- SSH サーバ : 他社ゲートウェイ
- Samba サーバ : 他社内プライベート
- Gfarm : 他社内プライベート

以上のような場合でも，インターネットを越えて，Samba や Gfarm にアクセスすることができます．
他の構成でも SSH を駆使してアクセスできる経路ならば応用できると思います．

以下では，(Gfarm とは関係なく) Samba や Windows マシンに SSH でポート転送する方法をご紹介します．

## 2. ソフトウエアの準備

- Windows マシン (2000, XP, Vista で動作確認) Administrator 権限が必要
- Windows 用 SSH クライアント (ポート転送用) 以下のどれかを使用 (なるべく最新版)
  - PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/
  - PuTTY 日本語対応: http://hp.vector.co.jp/authors/VA024651/
  - Cygwin OpenSSH: http://sourceware.org/cygwin/
  - PortForwarder: http://www.fuji-climb.org/pf/

## 3. 仮想ネットワークインターフェースのインストール

現在使用しているネットワークインターフェースとは別に，転送元となるためのネットワークインターフェースを用意します．物理的なインターフェースを増設する必要はなく，仮想的なインターフェースでも良いので，以下の方法を紹介します．

1. コントロールパネルを開きます．
2. ハードウエアの追加を開きます．
3. 「次へ」を押します．
4. 「はい、ハードウエアを接続しています」を選択して次へいきます．
5. 一番下の「新しいハードウエアの追加」を選択して次へいきます．
6. 「一覧から選択したハードウエアをインストールする(詳細)」を選択して次へいきます．
7. 「ネットワーク アダプタ」を選択して次へいきます．
8. 「Microsoft」と「Microsoft Loopback Adaptor」を選択して次へいきます．
9. インストールが完了するまで続行します．
10. インストールが終わったら，コントロールパネルからネットワーク接続を開きます．
11. デバイス名が「Microsoft Loopback Adaptor」であるアイコンを探します．
12. # このアイコンの名前を「for SMB over SSH」などわかりやすい名前にしておくとよいでしょう．
13. プロパティを開き，全般のタブで，「Microsoft ネットワーク用ファイルとプリンタ共有」のチェックを外します．
14. 「インターネットプロトコル(TCP/IP)」のチェックは入れたまま，選択し，プロパティを押します．
15. 他のマシンと重ならない IP アドレスとサブネットマスクを入力します． プライベートアドレスや LINKLOCAL アドレス (169.254.*.*) のアドレス範囲を使うことになると思います． 今後は 169.254.0.1/255.255.0.0 と設定した場合の例として説明します. ゲートウェイ，DNS の項目を入力する必要はありません．
16. 「詳細設定」を開きます. 「WINS」のタブで「NetBIOS over TCP/IP を無効にする」を選択します.
17. それぞれ OK で決定して閉じます.

- 通常利用しているネットワークインターフェースのポート 139/TCP (Vistaの場合 445/TCP)は使用されているので，この方法を利用して，139(445)番を確保します．
- 「詳細設定」→「IP 設定」タブ→「IP アドレス」で，さらに IP アドレスを追加できるので，それらも転送元にすることにより，複数拠点の Samba を同時に使うこともできます.
- %windir%\system32\drivers\etc\hosts ファイルを使って IP アドレスと好きな名前を対応させておくと便利です．

## 4. ポート転送の設定

SSH のローカルフォワード機能を使い，仮想ネットワークインターフェースのポート 139(Vistaの場合445)番を，接続先の SSH サーバから見えるマシンのアドレスとそのポート 139(Vistaの場合445)番に転送します．以下、139番ポートで説明していますが、Vistaの場合は全て445番に読み替えてください．

- 多段に SSH 接続をしてポートを転送する場合は，途中のポートは 139 番以外でも大丈夫ですが，最終的な出口と入り口は，ともに 139 番である必要があります．
- ポートを転送するときにポート番号を変換することで，139 番以外で Samba を動かすこともできます．

以降では，以下の構成を仮定して説明します．

- 上記で設定したクライアント側の仮想ネットワークインターフェース: 「169.254.0.1」
- SSH サーバのホスト名: sshserver.example.com
- SSH サーバを経由してから見える Samba マシンの IP アドレス: 「192.168.1.234」
  - SSH サーバと Samba マシンが同一の場合は「127.0.0.1」でも可能です．
  - sambaserv.example.com のような名前で指定も可能です．

### PuTTY (日本語版) の場合

1. sshserver.example.com への SSH の設定(セッション)をつくって保存し，接続できることを確認しておきます．
2. PuTTY を起動しなおして，そのセッションをもう一度読み込みます．
3. (「接続」→「SSH」→)「トンネル」を選択します．
4. 源ポートに「169.254.0.1:139」(狭いですが)，送り先に「192.168.1.234:139」と入力し，「ローカル」にチェックが入っていることを確認して，追加を押します．
5. セッションを保存します．

### Cygwin OpenSSH または PortForwarder の場合

Cygwin ならば .ssh/config に，PortForwarder ならば設定ファイル(.txt) に， 以下のような設定を追加します．

例

    Host sshServerForSamba
    HostName sshserver.example.com
    User takuya
    Port 22
    LocalForward 169.254.0.1:139 192.168.1.234:139

## 5. 接続

1. 上記で設定した SSH クライアントを用いて SSH サーバに接続します．
2. エクスプローラを開きます．
3. アドレスバーに「\\169.254.0.1」と入力します．
4. # 繋がらない場合は，SSH クライアントを最新版にしてみてください．
5. パスワードを聞かれる場合は，転送先の Windows または Samba 用のユーザ名とパスワード入力します．
6. 共有フォルダをネットワークドライブに割り当てることもできます．

## 6. 切断

1. マイコンピュータを右クリックし，「ネットワークドライブの切断」を開きます．
2. 該当するドライブがあれば選択して OK で切断します．
3. 切断後，または上記で該当するドライブが無い場合には，使用していた SSH クライアントを終了します．

## 7. その他

- SSH を用いて，TCP のみを転送しているので，VPN と比べて手軽で安全です．
- 通信性能は，SSH の通信性能に依存します．暗号モードや圧縮モードも影響します．

## 8. Linux の場合(参考／比較)

Linux の場合は，以下の手段で，手元のクライアントから直接アクセスできない Gfarm のディレクトリ以下のファイルに直接アクセスできます．さらに簡単です．

- 手元では SSHFS-FUSE か SHFS を用いて，SSH 越しで以下のサーバのディレクトリをマウント
- Gfarm にアクセスできる SSH サーバマシン上で gfarm2fs を用いて Gfarm をマウント