文書集 >
ユーザーズマニュアル >
SSH のポート転送で Samba にアクセス
SSH のポート転送を用いて Samba にアクセスする
1. 概要
SSH サーバから見えるネットワーク上に Samba サーバが存在し,その SSH サーバに SSH でアクセスできるならば,その Samba サーバにアクセスすることができます.
つまり,Windows マシンから,通常ではアクセスできない環境からでも,VPN を用いずに SSH を用いて,防火壁やインターネットを越えて,Windows のファイル共有サービスや Samba にアクセスすることができます.
このために SSH のポート転送の機能を用います.手順は簡単です.
構成例1
- Windows クライアント : 勤務先,モバイルなど
- SSH サーバ : 自宅 BB ルータポート転送経由 (or DMZ 環境)
- Windows ファイル共有 : 自宅内プライベート
たとえば上記の構成であれば,出先から自宅の Windows のファイルにアクセスできます.
これを応用した例として,外部からはアクセスできない Gfarm の環境に,Samba と SSH サーバを置くことで,外部からアクセスすることもできます.
Samba を経由して Gfarm にアクセスする方法は,
をご覧ください.
構成例2
- Windows クライアント : インターネット越し,自宅 BB ルータ内, モバイルなど
- SSH サーバ : 会社(内外)ゲートウェイ
- Samba サーバ : 会社内プライベート
- Gfarm : 会社内プライベート
構成例3
- Windows クライアント : 会社防火壁内,インターネットはプロキシサーバ必須
- 社内プロキシ : SOCKS/HTTP プロキシ (プロキシを使って外部へ SSH)
- SSH サーバ : 他社ゲートウェイ
- Samba サーバ : 他社内プライベート
- Gfarm : 他社内プライベート
以上のような場合でも,インターネットを越えて,Samba や Gfarm にアクセスすることができます.
他の構成でも SSH を駆使してアクセスできる経路ならば応用できると思います.
以下では,(Gfarm とは関係なく) Samba や Windows マシンに SSH でポート転送する方法をご紹介します.
2. ソフトウエアの準備
- Windows マシン (2000, XP, Vista で動作確認) Administrator 権限が必要
- Windows 用 SSH クライアント (ポート転送用) 以下のどれかを使用 (なるべく最新版)
3. 仮想ネットワークインターフェースのインストール
現在使用しているネットワークインターフェースとは別に,転送元となるためのネットワークインターフェースを用意します.物理的なインターフェースを増設する必要はなく,仮想的なインターフェースでも良いので,以下の方法を紹介します.
- コントロールパネルを開きます.
- ハードウエアの追加を開きます.
- 「次へ」を押します.
- 「はい、ハードウエアを接続しています」を選択して次へいきます.
- 一番下の「新しいハードウエアの追加」を選択して次へいきます.
- 「一覧から選択したハードウエアをインストールする(詳細)」を選択して次へいきます.
- 「ネットワーク アダプタ」を選択して次へいきます.
- 「Microsoft」と「Microsoft Loopback Adaptor」を選択して次へいきます.
- インストールが完了するまで続行します.
- インストールが終わったら,コントロールパネルからネットワーク接続を開きます.
- デバイス名が「Microsoft Loopback Adaptor」であるアイコンを探します.
- # このアイコンの名前を「for SMB over SSH」などわかりやすい名前にしておくとよいでしょう.
- プロパティを開き,全般のタブで,「Microsoft ネットワーク用ファイルとプリンタ共有」のチェックを外します.
- 「インターネットプロトコル(TCP/IP)」のチェックは入れたまま,選択し,プロパティを押します.
- 他のマシンと重ならない IP アドレスとサブネットマスクを入力します.
プライベートアドレスや LINKLOCAL アドレス (169.254.*.*) のアドレス範囲を使うことになると思います.
今後は 169.254.0.1/255.255.0.0 と設定した場合の例として説明します.
ゲートウェイ,DNS の項目を入力する必要はありません.
- 「詳細設定」を開きます. 「WINS」のタブで「NetBIOS over TCP/IP を無効にする」を選択します.
- それぞれ 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 (日本語版) の場合
- sshserver.example.com への SSH の設定(セッション)をつくって保存し,接続できることを確認しておきます.
- PuTTY を起動しなおして,そのセッションをもう一度読み込みます.
- (「接続」→「SSH」→)「トンネル」を選択します.
- 源ポートに「169.254.0.1:139」(狭いですが),送り先に「192.168.1.234:139」と入力し,「ローカル」にチェックが入っていることを確認して,追加を押します.
- セッションを保存します.
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. 接続
- 上記で設定した SSH クライアントを用いて SSH サーバに接続します.
- エクスプローラを開きます.
- アドレスバーに「\\169.254.0.1」と入力します.
- # 繋がらない場合は,SSH クライアントを最新版にしてみてください.
- パスワードを聞かれる場合は,転送先の Windows または Samba 用のユーザ名とパスワード入力します.
- 共有フォルダをネットワークドライブに割り当てることもできます.
6. 切断
- マイコンピュータを右クリックし,「ネットワークドライブの切断」を開きます.
- 該当するドライブがあれば選択して OK で切断します.
- 切断後,または上記で該当するドライブが無い場合には,使用していた SSH クライアントを終了します.
7. その他
- SSH を用いて,TCP のみを転送しているので,VPN と比べて手軽で安全です.
- 通信性能は,SSH の通信性能に依存します.暗号モードや圧縮モードも影響します.
8. Linux の場合(参考/比較)
Linux の場合は,以下の手段で,手元のクライアントから直接アクセスできない Gfarm のディレクトリ以下のファイルに直接アクセスできます.さらに簡単です.
Gfarm File System