プロキシがある場合のツール等の設定いろいろ

会社勤めで開発していて面倒なのが、セキュリティの関係でインターネット接続時にプロキシ(しかも認証つき)を通らなくちゃいけないこと。このせいで少々面倒な目にも遭ってきたので、ある開発ツールを認証つきプロキシ環境で使う場合にどうすればいいかをいくつかまとめてみる。

全てWindows XPが対象。トンネルとか外部に踏み台を用意するとかの怪しげなことはしない。

Subversion(TortoiseSVN)

普通に設定項目にプロキシ設定があるので設定するだけ。

RubyGems

コマンドプロンプト

set http_proxy=http://<username>:<password>@<proxy-host>:<proxy-port>

のように環境変数を設定するだけでOK。これ以降は普通に gem install 等ができる*1

GitHub

普通はHTTP/HTTPS/FTPくらいしか許可されていないはずなので、Gitプロトコルでの通信はできない。ただ、ありがたいことに GitHubHTTPでのcloneをサポートしているので、普通に可能。

msysgitインストール済みと想定すると、まず RubyGems のときと同様に環境変数を指定してから、Clone URL の git を http に変える。たとえばRailsなら

git clone http://github.com/rails/rails.git

とか。pushとかは無理っぽい。

GitHubからRailsプラグインをインストールする場合も同じ。環境変数を設定した後、git: を http: に変えるだけ。

ruby script\plugin install http://github.com/rails/exception_notification.git

GitHub(push)

msysgitでGitHubにwriteアクセスしたい場合は、コマンドプロンプトで以下のようにする。

set https_proxy=http://<username>:<password>@<proxy-host>:<proxy-port>

Gemの場合と違って、https_proxy なので注意。この後、GitHubリポジトリに書いてある HTTP Read-Write access 用のURLを使って

git clone https://<自分のアカウント>@github.com/<対象アカウント>/<リポジトリ>.git

とすれば、その後は git push origin master で普通にpushできる。

ただし、上記のように設定しても

 error: error setting certificate verify locations:
 CAfile: /bin/curl-ca-bundle.crt
 CApath: none
 while accessing <リポジトリURL>

のようなエラーが出てしまう場合は、以下を実行。

git config --system http.sslcainfo <gitインストール先>\bin\curl-ca-bundle.crt 

自分の場合、D:\bin\git 以下に msysgit の portable 版を置いていたので、

git config --system http.sslcainfo D:\bin\git\bin\curl-ca-bindle.crt

のようになった。

Eclipse

Galileo (3.5) になってつながらない場合はこちらを参照。

http://d.hatena.ne.jp/sardine/20090626

わたしの環境では、

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient

だけ書けば、実際に通信するときにユーザ名とパスワードを入力するダイアログが出てくれたので、ユーザ名とパスワードは直接 eclipse.ini には書かなかった*2

Pleiades All In One の Eclipse 3.7 Indigo JREつき版で、何を設定しても「HTTP プロキシー認証が必要です」と言われてしまう場合は、もしかしたら これ に該当するかも。

Maven2

C:\Documents and Settings\\.m2\settings.xml (正確には %USERPROFILE%\.m2\settings.xml )にプロキシの設定を記載する。

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <proxies>
    <proxy>
      <id>My Proxy</id>
      <active />
      <protocol>http</protocol>
      <host>proxy-host</host>
      <port>proxy-port</port>
      <username>username</username>
      <password>password</password>
      <nonProxyHosts>127.0.0.1|*.example.com</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

参照:http://maven.apache.org/settings.html#Proxies

ちなみにJavadoc Plugin ではこの設定を使ってくれないバグがあるらしく外部へのJavadoc Linkは現状できない……

*1:実行したらすぐCLSコマンド打ちましょう

*2:標準環境として開発メンバーにアーカイブ配ったりすることもあるし、なるべく属人的設定は避けたい