2011-07-13 18 views
2

git Microsoft Windowsを使用しています。 Windowsのデスクトップでgitが正常に動作しています。私はクローンし、プッシュし、ssh経由で遠隔地のgitリポジトリから引き出すことができます。 ウィンドウ内のgitサブモジュールでのssh認証の問題

私はサブモジュールでのgitを使用

は、.gitmodulesファイルには、これを含める:gitリポジトリをネットワーク内で共有されて

[submodule "build"] 
path = build 
url = ssh://<my-git-server>/srv/repos/git/build.git 
[submodule "core"] 
path = core 
url = ssh://<my-git-server>/srv/repos/git/core.git 

として、urlはユーザー名が含まれません。私の窓の私のsshユーザー名が一致するユーザーアカウント名場合

例えば:

ssh://<user>@<my-git-server> 

、その後、私は問題なくGitのサーバーにアクセスするSSHを伴うGitの操作を行うことができます。

ただし、開発者のWindowsのアカウント名の一部がsshサービスに存在しないため、パスワードを要求するssh git operationが失敗します。

Windows環境変数やその他の手段でsshを介してgitのユーザー名を指定するオプションはありますか?

+0

どのsshプログラムを使用していますか? CygwinのOpenSSH?パテ?他に何か? –

+0

私はwindows用にmsysgitを使用しています。私はどのsshプログラムがmsysgitで使われているのか分かりません。 –

+1

msysGitはOpenSSHを使用しています –

答えて

2

OpenSSHを実行している場合、2つのオプションがあります。

  1. 特定のユーザー名でsshを実行するようにGitに指示します。 UNIXのシェルプロンプト(bashの、SH)で、あなたが実行しているGitの前に次のことを実行できます。

    export GIT_SSH="ssh -l myusername" 
    

    を別の方法として、上記の値にすることができますset the Windows environment variableGIT_SSH

    詳細については、git help gitの「環境変数」を参照してください。

    このアプローチはGitにしか影響しないという利点がありますが、そのユーザ名はsshを介してアクセスする他のすべてのGitリポジトリに使用されます。

  2. あなた~/.ssh/configファイルに次の行を追加します

    Host my-git-server 
        User myusername 
    

    は、詳細については、ssh_configマニュアルを参照してください。

    msysGitのsshがあなたのホームディレクトリをどのように考えるかを判断する必要があります。 HOME環境変数を%HOMEDRIVE%%HOMEPATH%に設定する必要があります。あるいは、環境変数を設定して、-F path_to_your_ssh_configオプションをsshに渡すことができます。

    このアプローチは、my-git-serverへのsshアクセスにのみ影響するという利点がありますが、my-git-serverへの非Git sshログインにも影響します。

+0

私はWindows上でgitを実行しています。あなたのソリューションはLinuxにも当てはまると思います。 –

+0

OpenSSHを実行している場合は、Windowsにも適用されます。 –

+0

私はmsysgitを実行しているWindows 7で両方の方法を試してみましたが、うまくいきません。それを動作させる唯一の方法は、環境変数UserNameを変更することです。しかし、これは良い解決策ではないようです。 –