2011年12月14日水曜日

Eclipse EGit の Auth fail エラーへの対処法

Eclipse の EGit で Team → Push to Upstream がうまくいかず、だいぶ悩んだ。次のようなエラーメッセージが出て、push できなかった。

An internal Exception occurred during push: ssh://ユーザー@ホスト/GITリポジトリ: Auth fail

試行錯誤していたところ、この問題は Eclipse を Windows で使っている場合に起こることを知った。

Auth fail - jGit on Eclipse with Windows
http://blog.phlegx.com/2009/06/17/auth-fail-jgit-on-eclipse-with-windows/

Windows 7 64-bit 版で Eclipse 3.7 (Indigo) を使っている私のケースでは、次の手順を踏むことにより問題を解決できた。


(1) 対象ホスト用の秘密鍵を含むファイルを準備する。

ファイル名の例:
C:\Users\ユーザー名\.ssh\id_rsa


(2) ホームディレクトリの .ssh ディレクトリの下に config というファイルを作成する。

ファイル名の例:
C:\Users\ユーザー名\.ssh\config


(3) config ファイルに次の内容を記述する。

Host = ホスト名
IdentityFile = 秘密鍵ファイル

ファイル内容の例:
Host = example.com
IdentityFile = C:\Users\ユーザー名\.ssh\id_rsa

場合によっては、上記に加えて環境変数 HOME を明示的に「C:\Users\ユーザー名」と設定しておく必要があるかもしれない。