続:SSH逆ポートフォワーディング

暇な時にちょこちょこやってた訳ですが
つい先日,SSH+逆ポートフォワーディングによるVNC接続が完了しました.

とはいっても・・・
逆ポートフォワーディングではなく,Googleでは逆方向ポートフォワーディング,あるいはトネリングとして
皆さま記事を書いていらっしゃるようで・・・


必要なモノ.
freeSSHd
PuTTY(sshクライアントとして.無くても他の物で代用可)
RealVNC

本当は,RDPで接続をしたかった訳なんですが
自宅も研究室もWindows7なくせに,ログイン画面で固まるという謎の現象のため
現在はRealVNCを使っています.


freeSSHdの設定

特に何かを気にする必要もなく,ポンポンと進んでいきましょう.
インストール完了後に,Settingsを開きます.

ここで
・ユーザの追加(ID,パスワードの設定など)
 -今回は,めんどくさかったので,公開鍵などは設定しておらず
  パスワード認証のみです.

SSHのポート変更
 -デフォルトでもいいのですが,気分的にいやなので,適当な数値に変更
  ここでは50022とでもしておきましょう.

・Tunnelingタブでlocalもremoteもポートフォワーディングを許可する,にチェックを入れる

ユーザの追加では,ShellとTunnelにチェックを入れておきましょう.
これでポートフォワーディングを使える準備は整いました.


PuTTYの設定

まずは,下から設定していきます.

PuTTYはググれば日本語版があるので,それを使いましょう.
開くと左側にメニューが開かれるので
SSH」の項目にある「+」をクリックします.

「トンネル」項目を選びます.

ポートフォワードの設定

トンネル項目を選ぶと,真ん中下あたりに,「ローカル」「リモート」「ダイナミック」があります.
今回は前者二つを使います.

「ローカル(研究室)」- クライアント側からの通信をホスト側にフォワードする.
「リモート(自宅)」- ホスト側からの通信をクライアント側にフォワードする.

簡単に説明するとこんな感じです.
()内は私が置かれてる状況だとでも思ってください.

「源ポート」- 任意に設定された源ポートに対する通信が「送り先」で設定された
       IPアドレス/ポート番号にフォワードされる.

と思ってください.

今回はVNCの設定はデフォルト,として話しをしていきます.
なお,源ポートなどは私が勝手に設定していきますので
参考にされる方(いるかどうかは分かりませんが)が勝手に変えてもらって全く問題はありません.

ローカルからリモートへVNC接続をしたい.

この場合

  • 源ポート:56900
  • 送り先:「自宅のサーバのIPアドレス」:5900
  • 「ローカル」にチェックを入れる.

です.間違えても,送り先にグローバルIPアドレスを入れないでくださいね.

リモートからローカルへVNC接続をしたい.

この場合

  • 源ポート:55900
  • 送り先:「ローカル(研究室など)にあるPCのIPアドレス」:5900
  • 「リモート」にチェックを入れる.

と,なります.

その他

忘れがちですが,「keepalive」設定をしておきましょう.
定期的に通信をして,ssh接続が切れなくなります.
keepalive設定は,PuTTY設定の左側のメニュー欄の「接続」を選択すると一番上に出てきます.
私は適当に100秒に設定しておきました.

これで,問題が無ければメニュー欄一番上の「セッション」で
ホスト名に自宅サーバIPアドレスかホスト名を書きましょう.
楽したかったら,DynDNSとかに登録すると良いです.

ポートには,freeSSHdで設定したポート50022を設定します.
後はこのセッションを何回も使うつもりであれば,セッション一覧に追加します.

繋がりましたか?

繋がらなかったら,自宅にあるルータのポートが空いてるか確認してください.
大体そこらへんの設定が間違っていると思われます.

繋がったら,VNCで接続してみましょう.
ローカル(研究室)→リモート(自宅)であれば

VNCの接続先は「localhost:56900」

で繋がるかと.

リモート(自宅)→ローカル(研究室)であれば

VNCの接続先は「localhost:55900」

で繋がると思います.

この際,sshセッションが閉じると,強制的にトネリングされてる通信は全部切れますので
そこだけ注意してください.

いやー,便利便利.
localhost:55900