nDiki : port forwarding

2002年4月16日 (火)

ホームページ・ビルダーのサイト転送を secure に

ホームページ・ビルダーでコンテンツを書いている。 サイトへのアップロードは、SSH でしたいので私がコピーを受けとって代理アップロードしていた。 常時接続を機に、直接アップロードできるようにしてあげなければ。

ということで PortForwarder という秀逸なソフトを使用する事に。 SSH ポートフォワーディングに特化したソフトで、扱いやすい。

ぱぱっと設定。ローカルの 21番ポートを Web サーバの21番ポートに SSH ポートフォワーディングできるようにしておく。 ホームページ・ビルダーからはローカルホストにパッシブモードで FTP するように設定。

スポンサード リンク
[ 4月16日全て ]

2004年3月31日 (水)

SSHport forwarding が通らなくなった

会社のルータの設定が変更された影響で POP over SSH ができなくなった。

 ssh -L 12345:mailserver.example:110 mailserver.example

していたのを

 ssh -L 12345:localhost:110 mailserver.example

に修正して復活。

[ 3月31日全て ]

2004年4月19日 (月)

Mew - mew-ssh-keep-connection

いつの間にか Mew から SSH port forwarding で会社の SMTP サーバに接続すると1通目しか送信できなくなってしまっている。

1回目に開いたSSH接続がうまく使いまわせていないのか? mew-ssh-keep-connection (や mew-config-alist での ssh-keep-connection) を nil にしてみたけど、SSHのプロセスが残ったままになっている。 いまのところ解決できず。

[ 4月19日全て ]

2005年8月9日 (火)

帰省後のメール取得トラブルは Linux kernel 選択ミスが原因

4日ぶりにPC生活に復帰。 メールは naney.org の方に800通ちょっと、会社の方に100通弱。 fetchmail

取れぬ。例によって溜めすぎかなぁ。

naney.org の方は一時的に、SSH port forwarding 経由にするのをやめたら取得できた。

会社の方は駄目。サーバ側の問題か? (1通ずつとか)きざんで fetch すると、取れるようだ。 fetchmail の -B オプションを指定してチマチマとる。 これである程度取得できたが、サイズの大きいメールは1通単位でも取れない。

しょうがない。サーバの Maildir を tarball にまとめてとってくるか。

……あれ。 サーバでまとめた tarball を scp で持ってこれない。転送途中で止まってしまう。 うーん。困った。

試してみたところどうやら大きなファイル転送はメールに限らず駄目なようだ。 あれ? 前にもこんな症状あったような。 nDiki を見直したら MADWIFI 試行錯誤していたときにあったな。

とりあえずリブートしてみるか。

再起動してGRUBのメニューをみて気がついた。 うまく動くように設定していないままの kernel 2.6 でブートしていたようだ。 帰省前にかなり久しぶりにシャットダウンしたので、帰ってきて起動した時に 2.4 系を選んでブートしなければならなかったことを忘れていたよ。

これに気がつくまで、結局3時間ぐらい苦戦してしまった。とほほ。

[ 8月9日全て ]

2006年5月23日 (火)

ISP から Outbound Port25 Blocking を行うとのお知らせ

ISP から OP25B を行うとのメールがきた。

Mew の設定

ノート PC の設定変更が面倒だな……と思ったが、考えてみたら普段手で書いて送っているメールMew から「直接 www.naney.org か会社の SMTP サーバへ SSH port forwarding 経由で送っている」から、こちらは別に関係ないのか。

qmail の設定

とはいえローカルの qmail から送っているメールもあるから、これの設定をする必要あり。 こいつはどうやって設定しようか。

  1. 自宅にいる時は「プロバイダSMTP サーバ (25番ポート)経由」、外(別の接続からの時)では「ローカルの qmail から直接」
    • 切り替えが必要
  2. プロバイダのサブミッションポート 587番 + POP before SMTP 経由」
  3. 「他のサブミッションポート 587番 で提供されている SMTP サーバ経由」
    • SMTP サーバのあてがない

さて、どうしたものか。 皆はそうしているのか、要調査。

[ 5月23日全て ]

2006年6月3日 (土)

FoxyProxy と autossh で社内 Web ページを閲覧

メンテナンス等のため社内 Web サイトを社外から閲覧する必要がある場合 SSHport forwarding を使ってアクセスしていたのだが、その都度 Firefoxproxy を変更したりするのが面倒だった。

そんな折 FoxyProxy という Firefox 拡張機能があることを知った。 これは登録された URL パターン毎に、自動的に proxy を切り替えてくれるという優れもの。 これは便利。

autosshport forwarding (SOCKS サーバ)を開いておくようにして、社内のホスト名/IP アドレスURLの時はそこを経由するようにしておくと、いつでも Firefox から閲覧できるようになる。

 autossh -N -f -D8090 <中継するホスト名>
[ 6月3日全て ]

2006年6月15日 (木)

SSH port forwarding 経由での Unison を用いたファイル同期

ノート PC ととあるプライベートネットワーク上のサーバとで Unison を使って同期しているディレクトリを、プライベートネットーワークの外から SSH 経由で port forwarding して同期できるようにしたくなった。

 今
 [ノート PC] -------------------- [サーバ]
               Unison with SSH   192.168.0.x

 これから
 [ノート PC] -------------------- [サーバ]
               Unison with SSH   192.168.0.x

 [ノート PC] -- [ゲートウェイ] -- [サーバ]
               gw.example.com    192.168.0.x
               Unison with SSH

現在のノート PC 上での設定

 times = true
 root = /home/naney/somedir
 root = ssh://192.168.0.x//home/naney/somedir

 ignore = Name *~
 ignore = Name .*~
 ...

が 設定ファイル ~/.unison/server.prf の内容。

 unison server [options]

で同期している。

SSH port forwarding 経由で同期

新しくノート PC 上に設定ファイル ~/.unison/serverremote.prf を作成する

 times = true
 root = /home/naney/somedir
 root = ssh://localhost//home/naney/somedir
 rootalias = ssh://localhost//home/naney/somedir -> ssh://192.168.0.x//home/naney/somedir
 sshargs = -p 8022 -o HostKeyAlias=192.168.0.x

 ignore = Name *~
 ignore = Name .*~
 ...

SSH port forwarding を開いてから、上の設定ファイルを使って同期するシェルスクリプト unison-serverremote を書く

 #!/bin/sh
 ssh -f -L 8022:192.168.0.x:22 gw.example.com sleep 10
 unison serverremote $@

これで

 unison-serverremote

で、SSH port forwarding 経由で同期できるようになった。

[ 6月15日全て ]

2006年6月29日 (木)

SubversionSSH port forwarding 経由での svn+ssh

普段プライベートネットワーク内で、svn+ssh で接続している Subversion リポジトリSSH 経由で port fowarding して接続するようにする。

 [ノート PC] -- [ゲートウェイ] -- [リポジトリのあるサーバ]
                gw.example.com    192.168.0.x

ポートフォワーディング用 SSH ラッパー

例えば svn-gw-ssh という名前で以下のファイルを作成:

 #!/bin/sh
 HOST_NAME=$1
 shift 1
 ssh -f -L 8023:$HOST_NAME:22 gw.example.com sleep 10
 ssh -p 8023 -o HostKeyAlias=$HOST_NAME localhost $@

svn 用ラッパーも書いておく

例えば svn-gw という名前で以下のファイルを作成:

 #!/bin/sh
 SVN_SSH=svn-gw-ssh svn $@

使う

これで例えば svn+ssh://192.168.0.x/var/repos でチェックアウトした作業ディレクトリ上をプライベートネットワーク内外で、更新したりコミットしたりできるようになる。

プライベートネットワーク内からは今まで通り。

 svn update

プライベートネットワーク外からは

 svn-gw update

のようにする。

これで

と合わせて随分外部で作業できるようになった。 それだけ、外部でもやれる仕事が増えたということでもあるが。

[ 6月29日全て ]

2006年10月1日 (日)

OP25B 回避のために PortForwarder で port fowarding

本日より ISP の OP25B が本格的に開始する。これにより契約しているホスティングサービスの SMTP サーバに自宅から接続できなくなる(このホスティングサービスではサブミッションポート (587 番)の提供は無し)。

自宅の Windows BOX からのメール送信ができなくなると困るので、 PortForwarder を使って SSH port forwarding して対応することにした。

設定

まず PortForwarder 2.7.0 をダウンロードしてきて展開。

次に設定ファイルを作成する。ファイル名 config というテキストファイルを作成し、

 Host mailserver
        User username
        Protocol 1
        HostName ホスティングサーバ名
        LocalForward 8025 メールサーバ名:25
        LocalForward 8110 メールサーバ名:110

と書いて保存。

ホスティングサーバのメールサービスは POP before SMTP なので、25 番ポートと 110 番ポートを両方とも転送して、同じホストから接続しているように見せる必要がある。

次にこのファイルと同じディレクトリに SSH の鍵を置く (PortForwarder 1 時代に作った鍵があるので、今回は Protocol 1 を指定してこれを使うようにした)。

あとは PortForwarder を起動し、この config ファイルを指定して接続。

接続ができたら MUA を起動して POP、SMTP をそれぞれ localhost:8110、localhost:8025 を使うように設定を変更。

これでまずは OP25B を回避。 ちょっと手間が増えたがいたしかないところ。

[ 10月1日全て ]

2007年1月6日 (土)

connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続

以前社外から社内 Web サイトへのアクセスは autossh + FoxyProxy を使って SOCKS 経由で直接できるように設定した (記事)。 また UnisonSubversion もそれぞれ SSH port forwarding 経由で直接アクセスできるようにしてある (Unison の記事Subversion の記事)。

しかし社外から社内サーバへの SSH 接続(やファイル転送)は、以前として一旦中継ホストに接続(転送)してから再度接続(転送)していて面倒であった。

調べたところ Shun-ichi GOTO氏の SSH プロキシコマンド connect.c を使うと SOCKS サーバ経由で直接接続できるようなので設定してみた。

 [クライアント:8090] -- SOCKS -- [ゲートウェイ] -- [社内サーバ]
                                 gw.example.com    192.168.1.x

インストール

Debian なので apt-get で。

 apt-get install connect-proxy

SSH の設定

~/.ssh/config に以下の行を追加。

 Host 192.168.1.*
   ProxyCommand /usr/bin/connect-proxy -S localhost:8090 %h %p

192.168.1.* に接続する際は、connect-proxy を使ってローカルホストの 8090 ポートの SOCKS を通るようにする設定。

SSHSOCKS サーバにする

autossh を使って SSHSOCKS サーバを立てる

 autossh -N -f -D8090 gw.example.com

これで準備 OK。

使ってみる

SSH 接続
 ssh 192.168.1.x

で接続を確認。

Konqueror (KDE)
 fish://192.168.1.x/

で直接ブラウズ、読み書き可能なことを確認。

Unison

普通に 192.168.1.x と同期できることを確認。

CVS

普通に 192.168.1.x 上のリポジトリに対して cvs update できることを確認

Subversion

普通に 192.168.1.x 上のリポジトリに対して svn update をかけるとアップデートし終わって最後に

 FATAL: output (local) failed, errno=32

というエラーがでる。

便利

Subversion だけちょっと気がかりだれど、その他はうまく行っている感じ。

これでかなり手軽に接続、転送できるようになった。 便利、便利。

追記 (2009年2月23日)

一時的に connect.c を通らないで直接接続する際には 'ssh -o ProxyCommand=none' とする。

 例:
 SVN_SSH='ssh -o ProxyCommand=none' svn update
[ 1月6日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.057233s / load averages: 0.53, 0.70, 0.65
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker