中継サーバーを経由して社内LAN上のテストサーバーへ接続する

いや、まぁ、タイトルどおりです(^^ゞ 実験です。興味本位です。(^^;;;

社内のテストサーバーに自宅から、好きなときに、どうにかしてSSH接続できないものか・・・?とてもじゃないけど、「VPN設置して家からアクセスさせてください」とか、「ルータのポート一個開けて、俺っちのテストサーバーへルーティングして」とか、そんな都合のいいことが通る(許可される)はずもありません(^^;;;

幸いなことに、テストサーバーはCentOS6で、社内の資産管理システムからは除外されている。というか、社内のIT管理部門にLinuxを扱えるシステム精通者はいません(笑) プロバイダー業も一時期やってたから数年前にはそれなりに詳しい人がいたかもしれませんが、経営方針とやらが変わってからそういう人たちは殆どいなくなった。会社から技術が無くなるって、ほんとあっけないですね。

ってなわけで・・・・?

サーバー・ネットワークの素人なりに考えた結果、やはりポート転送を使うしか方法がないかなと。ただ、家にあるPCはブロードバンドルーター(もはや死語か?)の内側のLANに繋がっているので、単純にSSHポート転送すればいい話ではないのは、自明です。

素人なりに考えたあげく、下記のように、現在契約しているVPSサーバーを中継してSSHポート転送を行えば、やりたいことは可能なはず・・・

ポートフォワーディングでファイヤーウォールを越える2

まず、社内のテストサーバーから中継サーバーに逆ポート転送をかけます。下記のような感じでしょうか。

>> ssh -N -R 10022:localhost:22  user@xxx.xxx.xxx.xxx

これで、中継サーバーの10022番へアクセスしたら社内の22番ポート(SSHD)にアクセスできるようになった。ただ、これだと、社内のテストサーバーにログインするためには、いちいち中継サーバーにログインして、そこから、またsshでログインして・・・という風になるので、もう一つ、家のPCから中継サーバへポート転送してしまおう、というのが今回の実験の目的。

中継サーバーへポート転送するには、こんな感じ?

>> ssh -N -L 22:localhost:10022 user@xxx.xxx.xxx.xxx

理屈はあってると思うんだけど、これで家のPCのローカルポート22番へsshで接続すると、中継サーバーの10022番ポートへ接続され、さらに中継サーバーの10022番ポートは、社内のテストサーバーの22番ポートへ転送される。

別にこんなことしなくても、多段SSHすりゃいいじゃん、ってな声も聞こえますけど、SSHじゃなくて、たとえば社内のテストサーバーにFTP接続したい、ってな時だと、やっぱり中継サーバーへのポート転送を行わないとセキュリティ的にねぇ・・・。
(※実際には中継サーバーへの接続には鍵認証を使い、家のPC(Windows7)からはPortForwarderを使用して接続しています。)

どこかに穴を開ける(ポートを開ける)リスクを最小限に抑えつつ、その場しのぎの方法としてSSHポート転送はついつい銀の弾丸に思えてきます(^^;;;

ちなみに、一度試みようと、家に帰ってきて繋げてみたところ、接続できませんでした。テストサーバーでKeepAliveの設定をし忘れてしまって・・・接続が切れてしまってたとさ。トホホ。

追記:
後日 ~/.ssh/config ファイルにServerAliveInterval を設定して、完了。快適です。SSHポートだけじゃなく、FTP/HTTPポートも転送することでやりかけの仕事を家でできるようになった(^.^)

なんかの加減で社内テストサーバーから中継サーバーへの接続が切れてしまうと一切接続できなくなるのは困りもの。autosshを使えばいい、というブログ記事が多いけど・・・鍵認証にパスフレーズを入力するようにしてあるので、ちょっと無理かな。現状、切れたら終了~。

インターネット上にフォルダを置きたい(その3)

インターネット上にフォルダを置きたい(その2)
インターネット上にフォルダを置きたい」

のつづきです。

iPhone4でのクライアント証明書を使った認証はあきらめ、携帯端末からのアクセスはダイジェスト認証に飛ばすことにしました。う~ん・・・携帯なので、まぁユーザー・パスワード認証の方が無くしたときのことを考えるとそっちの方がいいかもね、と思い込むようにしました(^^;;;

で、しばらく便利に使っていたのですが・・・、大きいファイル、具体的には128KB以上のファイルがアップロードできないことが判明。。。

Apacheサーバーのエラーログを確認すると・・・、

request body exceeds maximum size (131072) for SSL buffer  

というエラーが記録されていました。リクエスト ボディー部がSSLバッファの最大値128KBを越えているよ、とか言ってます・・・。

あ~、もう面倒くせ~なぁ~・・・・

Apache2.2のSSLモジュールのドキュメントを検索かけると、そのものずばりの設定を発見

http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslrenegbuffersize

他にも、http://www.jp.redhat.com/support/errata/RHBA/RHBA-2009-0388J.html とか。

SSLRenegBufferSize ディレクティブで 50MBに設定。これで1ファイル50MBまでオッケー。

いいかげん、もう安定運用したい。。。。

インターネット上にフォルダを置きたい(その2)

「インターネット上にフォルダを置きたい」 のつづきです。

無事、自分専用のフォルダをクラウド(笑)へ配置することができました。クライアント証明書をインストールしたPCから通常のフォルダ(正確にはネットワークドライブだけど)のように扱えます。目的の9割は達成。

あとは、携帯端末からのアクセスできるようにしなければなりません。僕はiPhone4を持っているので、safariか、WebDAVクライアント・アプリを入れれば目的はほぼ100%達成できます。

が・・・そうは問屋は下ろさない。クライアント証明書をiPhone4にインストールする手段がわからん・・・。

アップルのサイトで検索すると・・・

  1. iPhone構成ユーティリティー」っつーのをPCにインストールする。
  2. プロファイルを作成する。
  3. 作成したプロファイルを添付してiPhone4へメールで送信。
  4. 添付ファイルをタップして、プロファイルをインストール。

という手順みたいです。
(追記 2010/10/30)
わざわざメールで送信しなくても、iPhone4を接続するとiPhone構成ユーティリティで直接インストールできます。

これから先は、Windows7+iPhone4という前提ですので、あしからず。

さっそく、iPhone構成ユーティリティーをインストールし、起動。

操作自体は難しくなく、専門用語がズラッと出てきますが、スルー(^^。
構成プロファイルで「資格情報を構成」を選んで、「構成」をクリックすると、証明書ストアに登録されている証明書が全部一覧表示されるので、その中からクライアント証明書を見つけ出して選択。

iphone4

ただ、これ、クライアント証明書をWindowsの証明書マネージャでインポートするとき、「このキーをエクスポート可能にする」にチェックをいれていないと、iPhone構成ユーティリティーでエラー(例外?)でプロファイルに追加できません。デフォルトでチェックが入っていません。

p12 import

あとは、「書き出す」で、プロファイルを書き出して、iPhone4へメール経由でインストール。

ですが・・・・

フォルダにアクセスしても・・・クライアント証明書が効かず、エラーでアクセスできません!(;。;)

やっぱ・・・おれおれ証明書では無理なのかなぁ・・・う~ん・・・。教えてエロイ人!

検索しても、そんなことをしている人がほとんどいないのか、情報が得られず。

う~ん・・・iPhone・携帯端末用に、ダイジェスト認証に切り替えるべきか・・・?

サーバー側で作ったディレクトリのシンボリックリンクを作ってそれに対してアクセス制限かけることにしようかな・・・。やっぱユーザー/パスワード認証か~・・・。

インターネット上にフォルダを置きたい

意味不明なタイトルです。適切なタイトル名が思いつかんかった。

ネット上に個人的なフォルダを持ちたい場合は、無料のサービスがいろいろありますね。実際、僕もマイクロソフトのSkyDriveサービスのアカウントを取得してファイルの置き場にしています。25GBもあるのでまぁ容量的な問題はないのですが、いかんせん使い勝手が悪い。転送速度が遅い。他の無料のサービスもそうなんですが、便利なことは便利なんですが、細かいところで少なからず不満があります。

で、今回、ちょっとWindows7の挙動が掴めず、ちょっとハマったので、その備忘録です。

ちょい、長めの記事なので・・・

続きを読む

ブラウザでレポジトリ管理

Windows7を起ち上げたら、Windows Live Essentials 2011の更新が。。。更新してWriterを起ち上げたら・・・ああ! リボンUIになっとる!(怒) (^^;;;; う~ん・・・前のUIの方が良かったな。。。画面がワイドなので、ウィンドウ上部にメニューやボタンやらあるより、ウィンドウ横方向(サイド側)に持ってきた方が、作業領域が大きくなってイイと思うんだが・・・・。ノートPCの狭い解像度だとこれが致命的なんですよね・・・。

そんなことはどうでもよく・・・。

SubversionのレポジトリをVPSサーバーに置くことで、WindowsクライアントからTortoiseSVNを使ってソースコードの管理ができると、ネット環境があればどこからでもノートPCを使ってゴニョゴニョできるので便利です。

現状、レポジトリの置き場をUSBメモリにしているのですが、持ち歩かないと行けないし、無くしたり、落としたり、どこかに忘れてきたりすると非常に困るわけです。

このレポジトリをVPSに置いて運用したいと思い、レポジトリ自体の管理を行うブラウザベースの管理システムを探しました。探したと言ってもググっただけですけど(^^;;;、見つけたのは2つ。

  • USVN 
    【 http://www.usvn.info/ 】
  • Submin
    【 http://supermind.nl/submin/index.html 】

ここでいう管理というのは、あくまでレポジトリ自体の管理・・・要は svnadmin コマンド のフロントエンドみたいなイメージです。

ブラウザベースで管理できる機能で僕が欲しいのは・・・

  • レポジトリの作成・削除
  • レポジトリをhttpsアクセスできるように設定
  • レポジトリをホットコピーとアーカイブ(圧縮)化とそのダウンロード
  • レポジトリのダンプをダウンロード(圧縮)
  • ユーザー管理

とまぁ、これぐらい、自分で組めよ、と言われそうだけど・・・。

まだ、両方とも試せてませんが、週末にでも試してみて、両方とも使えなさそうなら、自分でカンタンなUIを作ろうかな、と思ってます。

とりあえず、早く会社のサイトを仕上げてしまわないと・・・。

ああ、いいかげん VC2008EE を Visual Studio 2010 Express へバージョンアップしたいし・・・開発マシン用に安PCを一個買おうかなぁ・・・。う~ん・・・またグチで終わってしまった。。。