Windows7 で sshポート転送を使って Windows ファイルを共有する

自宅-大学間はヤマハルータで IPsec により VPN を構築しているが、Windows ファイル共有のパケットは落としている。しかし、たまにファイル共有したい場合もあるので、SSH を利用した Winodws ファイル共有は便利かも。詳しくは、以下のサイトを参照のこと。

以下は、clearskybluelife : [windows7] sshポート転送でのwindowsファイル共有(その1) に書いてある通りに作業した際の記録。文章は上記サイト の内容を適宜修正している。なお、対象のPCは 192.168.12.0/24 のネットワークに属している。

ループバックアダプタのインストール

「デバイスマネージャー」→「ネットワークアダプター」を選択し、「操作」→「レガシーハードウェアの追加」を選択

Win7-ssh-fileshare01.jpg

「ハードウェアの追加ウィザード」が立ち上がる

Win7-ssh-fileshare02.jpg

「一覧から選択肢たハードウェアをインストールする (詳細)」を選択して「次へ」

Win7-ssh-fileshare03.jpg

ハードウェアの一覧から「ネットワークアダプター」を選択して「次へ」

Win7-ssh-fileshare04.jpg

製造元として「Microsoft」、ネットワークアダプターとして「Microsoft Loopback Adapter」を選択して「次へ」

Win7-ssh-fileshare05.jpg

「次へ」を選択

Win7-ssh-fileshare06.jpg

「完了」を選択

Win7-ssh-fileshare07.jpg

ループバックアダプタのインストールが完了。

Win7-ssh-fileshare08.jpg

ループバックアダプタの設定

この例では、「ローカル エリア接続2」として認識されている。右クリックで「プロパティ」を選択

Win7-ssh-fileshare09.jpg
  • Microsoftネットワーク用クライアント→チェックをオフにする
  • Microsoftネットワーク用ファイルとプリンター共有→チェックをオフにする
  • インターネットプロトコル バージョン4 (TCP/IPv4)→チェックはオンのまま、「プロパティ」を選択
Win7-ssh-fileshare10.jpg

「プロパティ」→「次のIPアドレスを使う」をチェックし、IPアドレスとサブネットマスクを入力する。プライベートアドレスから他で使っているものと重複しない適当なものを使う。(ここでは、10.255.255.1/24)

Win7-ssh-fileshare11.jpg

「詳細設定」をクリック→「TCP/IP 詳細設定」→「IP設定」タブで、「自動メトリック」のチェックを外し、「インターフェイスメトリック」に9999など十分大きい値を入力

Win7-ssh-fileshare12.jpg

「WINS」タブで、「LMHOSTSの参照を有効にする」のチェックを外し、NetBIOS設定で、「NetBIOS over TCP/IPを無効にする」にチェック。
「TCP/IP詳細設定」を「OK」で終了し、TCP/IPv4のプロパティで「OK」で終了、「プロパティ」も「OK」で終了する

Win7-ssh-fileshare13.jpg

Windows SMBドライバの調整

Windowsのファイル共有にはTCPの445番ポートを使う必要があるが、WIndowsは起動時、SMBドライバを使って全インタフェースで445番ポートをつかんでしまい、今回の目的で使おうとしてもブロックされてしまう。
そこで、起動時にSMBドライバを読み込むのを遅らせ、かつ、"portproxy rule"を使って 今回利用するループバックインタフェースでのポートを保護する。

  • コマンドプロンプトを管理者権限で起動する
  • コマンドプロンプトにて、以下のとおり入力し、smbドライバが起動時自動で開始するのを防ぐ
    sc config smb start= demand
    (参照元からの注意:start=の後に半角スペースが必要)
  • 上の作業で作ったループバックインタフェース(今回の例では10.255.255.1/24と設定)にてTCP 445番ポートへのアクセスを他のポート番号(ここでは44445)に迂回させる設定を行う。
    コマンドプロンプトで以下のとおり入力する。
    netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 
    connectaddress=10.255.255.1 connectport=44445
    (上記のとおりループバックインタフェースに設定したアドレスをlistenaddress, connectaddressで利用する。 なお、ループバックインタフェースに最初169.254.x.xといういわゆるautoconfigのアドレスを設定したところ うまく反映されなかったため、うまくいかなかった。 また、参照元によると127.0.0.1は試したところうまく動作しなかったとのこと。)
    Win7-ssh-fileshare15.jpg

うまく設定されていれば、コマンドプロンプトで

netsh interface portproxy show v4tov4

と入力すると

ipv4 をリッスンする:		ipv4 に接続する:

Address		Port		Address	Port
--------------- ----------	--------------- ----------
10.255.255.1	445		10.255.255.1	44445

と表示されるはず。

Win7-ssh-fileshare16.jpg

SMBドライバを開始する"タスク"の作成

上記作業でsmbは起動時自動で読み込まれなくなったため、起動時やログイン時にはて入力で読み込みを行う必要がある。
そこで、Windowsのタスクスケジューラを利用してsmbドライバの読み込みを実行させる。
「スタート」→「すべてのプログラム」→「アクセサリ」→「システムツール」→「タスクスケジューラ」を起動、タスクスケジューラのウィンドウが表示される。

Win7-ssh-fileshare17.jpg

タスクスケジューラの3つのペインの右側の「基本タスクの作成」を実行 (もしくはメニューバーの「操作」⇒「基本タスクの作成」) 基本タスクの作成ウイザードが立ち上がる。
ウイザードにて「名前」を入力して「次へ」 例えば「Start SMB driver」など内容がわかるものならなんでも良い。

Win7-ssh-fileshare18.jpg

「トリガー」として「ログオン時」を選択して「次へ」

Win7-ssh-fileshare19.jpg

「操作」として「プログラムの開始」を選択して「次へ」

Win7-ssh-fileshare20.jpg

プログラムの内容を以下を記入して「次へ」

プログラム/スクリプト:	c:\windows\system32\net.exe
引数の追加:		start smb 
Win7-ssh-fileshare21.jpg

「[完了] をクリックしたときに、このタスクの [プロパティ] ダイヤログを開く」 のチェックボックスにチェックして「完了」をクリック

Win7-ssh-fileshare22.jpg

タスクのプロパティにて、「全般」タブの「セキュリティオプション」にて 「ユーザがログオンしているかにかかわらず実行する」を選択して 「パスワードを保持しない」のチェックボックスにチェック、 「最上位の特権で実行する」のチェックボックスにチェック。

Win7-ssh-fileshare23.jpg

タスクのプロパティにて、「トリガー」タブの「ログオン時」という設定が登録されているので、その上でダブルクリック(または「編集」ボタンをクリック)すると

Win7-ssh-fileshare24.jpg

「トリガーの編集」ウィンドウが開くので「特定のユーザー」から「任意のユーザー」に選択を切り替えして「OK]

Win7-ssh-fileshare25.jpg

タスクのプロパティにて、「条件」タブで電源として「コンピューターを AC 電源で使用している場合のみタスクを開始する」にチェックが入っていないことを確認~ 最後にタスクのプロパティを「OK」で完了

Win7-ssh-fileshare27.jpg

再起動して設定の確認

上記の設定にて、smb driverは自動で開始しないものの、タスクスケジューラによって ログインしたときには開始されるはずである。

  • コマンドプロンプト(管理者権限は不要)にて以下を入力
    sc query smb
    表示結果のSTATEが4 RUNNINGとなっていたら設定はうまくいっている。
  • コマンドプロンプトにてportproxy ruleが動作されていることも確認する。
    netstat -an | find ":445 "
    以下のように表示されていればうまく設定されている。
    TCP	10.255.255.1:445	0.0.0.0:0	LISTENING
    もし、
    0.0.0.0:445
    と表示された場合、portproxyがうまく適用されていない可能性が高い。
Win7-ssh-fileshare28.jpg

Tera Term の設定

CIFS-over-SSH for Windows Vista/7 では putty を使っているが、clearskybluelife : [windows7] sshポート転送でのwindowsファイル共有(その3) に従って Tera Term を使ってみた。

sshポート転送を行うsshサーバに接続
当然ではあるが、sshサーバからWindowsファイル共有サーバにはIP接続可能である必要がある。(この例では、ssh サーバの IP アドレスは 192.168.12.202、Windows ファイル共有マシンの IP アドレスは 192.168.12.202 としている。)

Tera Termのメニューで「設定」⇒「SSH転送」をクリック

Win7-ssh-fileshare29.jpg

「SSHポート転送」という設定画面にて「追加」をクリック

Win7-ssh-fileshare30.jpg

個別のポート転送設定が入力できるので以下のとおり設定。
ポート転送を行う向きはローカル⇒リモートとなり、

  • ローカルのポート: 44445
  • リッスン: 10.255.255.1
  • リモート側ホスト: windowsファイル共有サーバのIPアドレス (192.168.12.200)
  • ポート: 445
    Win7-ssh-fileshare31.jpg

「OK」をクリックすると反映される。

Win7-ssh-fileshare32.jpg

エクスプローラで \\10.255.255.1\ とアクセスすると、SSH経由でファイル共有サーバにアクセスすることになる。

Win7-ssh-fileshare33.jpg

設定を解除する

  • 管理者権限でコマンドプロンプトを起動する。
  • 以下のように入力して、SMB ドライバが自動起動するように戻す。
    sc config smb start= auto
    start の後に半角でスペースを入れるのを忘れないように。
  • 以下のように入力して、portproxy のルールを解除する。
    netsh interface portproxy delete v4tov4 listenaddress=10.255.255.1 listenport=445
  • 以下のコマンドを入力して、デバイスマネージャを起動する。
    devmgmt.msc
    「ネットワークアダプタ」欄の「ループバック アダプタ」を選択し、右クリックで削除する。
  • 「システムツール」→「タスクスケジューラ」を起動、'Start SMB driver' と名付けられたタスクを削除する。

添付ファイル: fileWin7-ssh-fileshare33.jpg 552件 [詳細] fileWin7-ssh-fileshare32.jpg 457件 [詳細] fileWin7-ssh-fileshare31.jpg 507件 [詳細] fileWin7-ssh-fileshare30.jpg 523件 [詳細] fileWin7-ssh-fileshare29.jpg 556件 [詳細] fileWin7-ssh-fileshare28.jpg 448件 [詳細] fileWin7-ssh-fileshare27.jpg 523件 [詳細] fileWin7-ssh-fileshare26.jpg 218件 [詳細] fileWin7-ssh-fileshare25.jpg 511件 [詳細] fileWin7-ssh-fileshare24.jpg 548件 [詳細] fileWin7-ssh-fileshare23.jpg 436件 [詳細] fileWin7-ssh-fileshare22.jpg 480件 [詳細] fileWin7-ssh-fileshare21.jpg 511件 [詳細] fileWin7-ssh-fileshare20.jpg 493件 [詳細] fileWin7-ssh-fileshare19.jpg 467件 [詳細] fileWin7-ssh-fileshare18.jpg 564件 [詳細] fileWin7-ssh-fileshare17.jpg 569件 [詳細] fileWin7-ssh-fileshare16.jpg 566件 [詳細] fileWin7-ssh-fileshare15.jpg 553件 [詳細] fileWin7-ssh-fileshare14.jpg 239件 [詳細] fileWin7-ssh-fileshare13.jpg 490件 [詳細] fileWin7-ssh-fileshare12.jpg 515件 [詳細] fileWin7-ssh-fileshare11.jpg 568件 [詳細] fileWin7-ssh-fileshare10.jpg 455件 [詳細] fileWin7-ssh-fileshare09.jpg 521件 [詳細] fileWin7-ssh-fileshare08.jpg 523件 [詳細] fileWin7-ssh-fileshare07.jpg 480件 [詳細] fileWin7-ssh-fileshare06.jpg 487件 [詳細] fileWin7-ssh-fileshare05.jpg 580件 [詳細] fileWin7-ssh-fileshare04.jpg 413件 [詳細] fileWin7-ssh-fileshare03.jpg 469件 [詳細] fileWin7-ssh-fileshare02.jpg 542件 [詳細] fileWin7-ssh-fileshare01.jpg 606件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-02 (日) 07:28:14 (2147d)