Rapid Express

Rapid Express

中小企業を支援するLinuxベースのWebアプリケーション開発

Rapid Express RSS Feed
 
 
 
 

PuTTYのSSHトンネルをひっそりと自動で再接続

SSHサーバーを立てておくと、SSHサーバーのあるLAN内のどのパソコンにでもセキュアにリモートデスクトップ接続できます。ポートフォワーディングによるSSHトンネルです。

そのとき、SSHトンネルを掘る道具として重宝なのがPuTTYです。

?

具体的には、SSHポーとフォワーディングにおいて次の設定をすることで、リモートデスクトップ用のSSHトンネルを掘ることができます。

?

? 源ポート: 127.0.0.2:3390  (XP Homeなら”3390″または”localhost:3390″でも可)
? 送り先: 接続先PCのローカルIPアドレス:3389

PuTTY設定 - SSHポートフォワーディングのオプション

そして、リモートデスクトップの接続先として「源ポート」で指定した「127.0.0.2:3390」を指定します。

リモートデスクトップ接続

これで、接続先では3389のポートを開放する必要もなく、通信内容も暗号化されたセキュアなリモートデスクトップが実現できます。

?

しかしポートフォワーディングだけが目的の場合、PuTTYをそのまま使うのは便利と言えません。

?

ネットワークの切断があったときに、PuTTYには再接続機能がないので、ウィンドウを一度閉じて再起動するという煩雑な手順が必要となってしまいます。

まあ、これについてはPuTTYを繰り返しコールするスクリプトを書いてしまえば解決します。

「終了時のウィンドウクローズ」を「常にする」にしてしまえば、かえって好都合な仕様だと言えます。

?

むしろ問題は、PuTTYのターミナルウィンドウが邪魔なことだったりするわけです。

そこで、いつものようにGoogle先生に尋ねたところ、PuTTYのプログラムフォルダにはPuTTY.exe以外にもいろいろツールが入ってるとのことでした(特にPuTTYごった煮版)。どれどれ・・・

?

ポートフォワーディング用にはズバリpfwd.exeが用意されていて、再接続にも対応しているようですが、使い方がよくわかりません。

唯一のドキュメントがpfwd_sample.iniとのことですが、フォワードが次のパターンしか設定できません。

  • Lローカルポート:リモートホストアドレス:リモートポート
  • Rリモートポート:ローカルホストアドレス:ローカルポート
  • Dローカルポート

XP Professionalで使うため、「ローカルホストアドレス:ローカルポート:リモートホストアドレス:リモートポート」としたくても指定できません。

というか、PuTTYのセッションに設定したものを認識しないのでしょうか? [FORWARD]項目を省略して起動すると叱られます。

?

あきめかけていたところ、検索結果に天の声(2chログ)が・・・

?

pfwd使うよりオリジナルのplinkを無限ループさせとくほうがいいことに気が付いた

?

おお!

でもplinkはDOSコマンドなので、ウィンドウのないplinkwを使うことにしました。

再接続機能はないし、一度起動したが最後、どうやって終了したらよいかもわからない代物ですが、スクリプトから無限ループして使う分には困りません。

?

言語はいつものMortScript(のPC用)です。

putty.mscr

back_script = SystemPath("ScriptPath") \ "_putty_background.mscr"

If (ScriptProcExists(back_script))
  If (Question("接続を中断しますか?") = YES)
	KillScript(back_script)
	Kill("plinkw.exe")
  EndIf
Else
  Run(back_script)
EndIf

_putty_background.mscr?

★は使用するセッション名

While(true)
  RunWait("C:\Program Files\PuTTY\plinkw.exe",?"-load ★")
EndWhile

?

putty.mscrを実行すると延々と再接続を続けます。

もう一度実行するとループを終了し、plinkwのタスクも殺します。





Leave a Reply



Tags

Links




Meta


TMAX.MYOPENSRC.COM