2011-07-13 60 views
2

我正在使用git Microsoft Windows。 git在我的Windows桌面上工作正常。我可以通過ssh克隆,推送並從遠程原始git倉庫中提取。在Windows中使用git子模塊的ssh身份驗證問題

當我使用與子模塊的混帳,該.gitmodules文件包含此:

[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 

由於Git倉庫,網絡共享,URL將不包含用戶名。

例如爲:

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

如果我的SSH用戶名的比賽與我的Windows帳戶的用戶名,然後我可以執行涉及SSH訪問git的服務器沒有問題git的操作。

但是,某些開發人員的Windows帳戶名稱在ssh服務中不存在,而那些提示輸入密碼的ssh git操作將失敗。

是否有任何選項設置在Windows環境變量或其他方式提供git通過SSH的用戶名?

+0

您正在使用哪個ssh程序?來自Cygwin的OpenSSH?油灰?還有別的嗎? –

+0

我正在使用msysgit for windows。我不確定msysgit使用哪個ssh程序。 –

+1

msysGit使用OpenSSH –

回答

2

如果您正在運行OpenSSH,您有兩個選項。

  1. 告訴Git用特定的用戶名執行ssh。在UNIX shell提示符(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%。或者,您可以配置GIT_SSH環境變量以將-F path_to_your_ssh_config選項傳遞給ssh

    這種方法的優點是僅影響ssh訪問my-git-server,但它也會影響到我的git-server的非Git ssh登錄(您可能需要)。

+0

我在Windows上運行git。我認爲你的解決方案適用於Linux。 –

+0

如果您正在運行OpenSSH,它也適用於Windows。 –

+0

我已經試過在Windows 7上運行msysgit,它不起作用。使其工作的唯一方法是改變環境變量UserName。但是,這似乎不是一個好的解決方案 –