!!!SMB over SSH {{category Windows,OpenSSH,nolink}}SSHのポートフォワーディング機能を利用して、sshサーバのあるネットワークのファイルサーバ(samba)の共有フォルダにアクセスする。sshを利用するのでVPNが利用できなくてもファイヤーウォールやインターネットを超えて、Windowsのファイル共有サービスにアクセスすることが出来る。 !!必要なもの *sshサーバと接続できるアカウント *sshサーバから接続可能なファイルサーバ *PortForward機能を持つsshクライアント *管理者権限の使えるWindowsマシン sshのポートフォワーディング機能を利用するので当然その機能が必要になるが、さらに、ループバックアドレスを利用できないので、ローカル側でもポート番号だけでなくIPアドレスも指定できる必要がある。 ファイルサーバは、sambaサーバに限らず共有を利用できるWindowsマシンなどでもよい。また、アクセス制御を行っている場合は、そのアカウントも必要となる。 Windowsマシンに管理者権限が必要なのは、「Loopback Adapter」という仮想ネットワークインターフェースを追加する必要があるため。設定が済めば管理者権限は必要ない。 最低限の説明だけなので、sambaやsshサーバの設定やsshの接続設定が出来ていること。確認したのは、OpenSSHd, LANDISK, PuTTY, WinXP Pro SP2 という環境です。 !!!準備 !!クライアント(Windows)の設定 仮想ネットワークアダプタをクライアントに追加する。すべて Administrator権限で行う。 +「コントロールパネル」の「ハードウェアの追加」を開く ++新しいハードウエアの検索では見つからないので手動で追加を行う ++種類で「ネットワークアダプタ」を選択する ++製造元「Microsoft」の「Microsoft Loopback Adapter」を追加する +「コントロールパネル」の「ネットワークとダイヤルアップ接続」を開く ++新しく作成された「ローカル エリア接続」のプロパティを開く ++「Microsoft ネットワーク用ファイルとプリンタ共有」のチェックを外す ++「インターネットプロトコル(TCP/IP)」のプロパティを開く +++169.254.0.1 など重複しないIPアドレスとネットマスクを設定する +++DNSやゲートウエイの設定は必要ない +++WINSの設定から「NetBIOS over TCP/IP を無効にする」を選択する ++接続の名称をわかりやすい名前に変える IPアドレスは、プライベートアドレス{{fn "Private address : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16"}}やリンクローカルアドレス{{fn "Link local address : 169.254.0.0/16"}}あたりを使用するとよいかと… !!sshクライアントの設定 ※通常のSSH接続に必要な設定は出来ているものとして、ポートフォワードの設定を追加する。 仮想ネットワークアダプタのIPアドレスを 169.254.0.1。sshサーバから見たsambaサーバのIPアドレスを 192.168.0.2 とした場合、以下の様に追加する。 *ローカル側からリモート側へポートフォワーディング *ローカルポートは「169.254.0.1:139」 *リモート側ホストは「192.168.0.2」で、ポートは「139」 また、WindowsVista で使用する場合は、139番ポートの他に445番ポートも必要となるので、445番も同様に追加する。 ちなみに、sshサーバがsambaサーバを兼ねている場合、リモート側は 127.0.0.1:139 でもよい。 !!接続と切断 +SSHで接続する(SSHのログインもする) +エクスプローラなどで、「\\169.254.0.1」を指定して共有フォルダを参照する +パスワードを聞かれる場合は、転送先のユーザ名とパスワード入力する 共有フォルダをネットワークドライブに割り当てることも出来る。当然、SSHの接続を切ると共有フォルダはみれなくなる。 hosts もしくは lmhosts ファイルに「169.254.0.1」を適当な名前で登録すれば、「\\名前」でアクセス出来る。 !!!ソフトウエア毎の設定 仮想ネットワークアダプタのIPアドレスを 169.254.0.1。sshサーバから見たsambaサーバのIPアドレスを 192.168.0.2 とする。 !!PuTTY の設定 接続 - SSH - トンネル 項目に、ポートフォワードの設定を追加する。 *源ポート:169.254.0.1:139 *送り先:192.168.0.2:139 *ローカルにチェック *自動にチェック(IPv4,IPv6 でもいい) ※同様に445番も追加する。 !!PuTTY の pfwd の設定 ポート転送だけ必要なら、PuTTYを起動してターミナルを表示しなくても、付属のpfwdを使用すれば、ターミナルを表示せずにポート転送を行える。 通常のポート転送の設定が出来ているなら、以下のようにSMB用の設定を追加するだけです。(SEQは適当に) SEQ=L169.254.0.1:139:192.168.0.2:139 ただ、ちょっとクセ(と言うか気をつけること)があるので自分用にメモメモ。 *接続先のホスト鍵が PuTTY.ini に保存されていないと、接続エラーで終了してしまう。なので、一度 PuTTY で、セッションの設定をして、接続しホスト鍵を記録しておく。 *SSHサーバーアドレスの設定で、IPアドレスやホスト名の他に、PuTTY で作成したセッション名を指定できる。ただ、iniの説明では「@セッション名」となっているが「@」はいらない。 *プライベートキーファイルの設定で、iniの説明では、省略時にはセッションの設定を使うとあるが、セッションの設定で設定していても設定が必要。 例:PuTTYで既に、test と言うセッション名で設定が出来ていているものとして。 [SSH] ; SSHサーバーアドレス Host=test ; プライベートキーファイル PrivateKey=test.ppk [FORWARD] ; NetBIOSセッション・サービス 01=L169.254.0.1:139:192.168.0.2:139 ; ダイレクト・ホスティングSMBサービス 02=L169.254.0.1:445:192.168.0.2:445 ; リモートディスクトップ ; ※もっとも接続時にポート番号を設定できる ;03=L169.254.0.1:3389:192.168.0.2:3389 !!TeraTerm の設定 '''結論から言うと出来ない'''。(やり方があったら教えて) 設定 - SSH転送 で「SSHポート転送」のダイアログを開く。「追加」ボタンを押下し入力ダイアログで以下を入力する。 *ローカルポートを選択(チェック) *ローカルポートに「169.254.0.1:139」 *リモート側ホストに「192.168.0.2」 *(リモート側)ポートに「139」 なんだけど、ローカルポートの欄に入れると「169.254.0.1:」までしか入らない…。 ちなみに、コマンドラインオプションでも転送の設定が出来るので /ssh-L169.254.0.1:139:192.168.0.2:139 とやってみるけどうまくいかない。 v4.58 ではエラーになって起動しない。v4.59 はエラーにはならないが転送されていない。v2.3 は試してない(古いし)。 !!Poderosa (SSH PortForwarding Gateway) の設定 '''使ってないからよくわからない'''。「出来ない」と言うのと「出来た」と言うの両方見かけるけど…。 Poderosa 付属の SSH PortForwarding Gateway を使用する。 *SSHサーバ、SSHポート、アカウント、認証方法 は他の転送と同じ *ローカルでlistenするポート:169.254.0.1:139 *転送先ホスト:192.168.0.2 *転送先ポート:139 *オプションの「Loopbackアドレスからの接続のみ許可」は“チェックしない” !!Cygwin OpenSSH と PortForwarder の設定 それぞれの設定ファイルに以下の転送の設定を追加する('''すればいいらしい''')。 LocalForward 169.254.0.1:139 192.168.0.2:139 !!!覚え書きメモ !!ループバックアドレス ループバックアドレス{{fn "Loopback address : 127.0.0.0/8"}}と言うのもあり、127.0.0.1 は自分自身に割り当てられている。 2000では、アダプタを追加しなくても 127.0.0.2 などを利用できるらしい。XPは自身になってしまうためダメ。 !!参考ページ *SMB over SSH (かえでのWebログ) **http://kaede.blog.abk.nu/0213 *SSH のポート転送を用いて Samba にアクセスする (Grid Datafarm) **http://datafarm.apgrid.org/document/html/ja/user/smboverssh.html *SMB over SSH by Poderosa (Myrmecoleon in Paradoxical Library. はてな新館) **http://d.hatena.ne.jp/myrmecoleon/20070503/1178184816 **Poderosaでの設定。 *SMB over SSH (受容野) **http://gaso.jpn.org/receptive-field/html/smb_over_ssh/index.html **Vistaでの設定。スクリーンショットあり。