SSHポートフォワーディング管理用Rubyスクリプトをgithubで公開しました
せっかくgithubのアカウントを作成したので,普段僕が最も利用している,SSHポートフォワーディングを管理するRubyスクリプトを公開しました.
sshポートフォワーディング
sshのポートフォワーディング機能を利用することで,ゲートウェイを踏み台にして,リモートの閉じたネットワーク内の計算機への仮想的な接続を作成することができます.
どんな時に便利かというと,例えば,リモートのネットワーク内で稼働しているsubversionやgitのサーバーにコミットしたいときに,ゲートウェイを介してそのマシンへの接続を作成することで,外部からもコミットができます.
ポートフォワーディングを使ってリモートネットワークのSubversionリポジトリにアクセスする
Subversionの設定
.subversion/config にアクセスに利用するリモートのポートを追加します.以下のような記述を追加します.
ssh = $SVN_SSH ssh -q mysvnserver = ssh -q -p 2240 -l shtaxxx
pf.rbでポートフォワーディングを作成する
あらかじめpf.rbのsshの項目に,以下のような設定を追加します.
2240はローカルのポート番号で上記のsvnの設定で記述したポート番号と同じにします.
192.168.0.40はリモートネットワークで最終的に接続したいサーバーのIPアドレスです.
変数GATEは自動的にグローバル変数$gatewayにて置き換えられます.
"mysvnserver" =>"ssh -f -N -L 2240:192.168.0.40:22 GATE",
そしてターミナルで以下のコマンドを入力してポートを作成します.
ruby pf.rb open ssh.mysvnserver
次にsvnリポジトリにアクセスしてみます.
以下のコマンドでsvnrootの内容が確認できると思います.
あらかじめssh公開鍵認証とssh-agentを動作させておくとより便利でしょう.
svn ls svn+mysvnserver://localhost/svnroot/
以上で,リモートのネットワークで動作しているSubversionリポジトリにアクセスできるようになりました.
他の使い道は?
例えばリモートネットワークのローカル限定のWebページにアクセスしたり,リモートデスクトップでログインしたりとか?