无法让TeamCity使用默认私钥向GitHub进行身份验证

无法让TeamCity使用默认私钥向GitHub进行身份验证,git,github,ssh,teamcity,Git,Github,Ssh,Teamcity,我正试图让TeamCity构建我的私有GitHub存储库。当我显式地设置密钥文件的路径时,我能够成功地使我的VCS根通过连接测试;然而,尽管谷歌搜索了很多次,但当我使用“默认私钥”选项时,我无法让它工作。我得到com.jcraft.jsch.JSchException:Auth fail 我的TeamCity服务器和构建代理都以名为(gasp)TeamCity的用户身份运行,C:\users\TeamCity\.ssh\的内容包括一个config和一个密钥文件,其中配置指向密钥文件。我的配置包含

我正试图让TeamCity构建我的私有GitHub存储库。当我显式地设置密钥文件的路径时,我能够成功地使我的VCS根通过连接测试;然而,尽管谷歌搜索了很多次,但当我使用“默认私钥”选项时,我无法让它工作。我得到
com.jcraft.jsch.JSchException:Auth fail

我的TeamCity服务器和构建代理都以名为(gasp)
TeamCity
的用户身份运行,
C:\users\TeamCity\.ssh\
的内容包括一个
config
和一个密钥文件,其中配置指向密钥文件。我的配置包含:

Host *
    IdentityFile ~/.ssh/github.key
我尝试过各种不同的路径样式,包括Windows和Unix样式,但似乎都不起作用


同样,如果我使用
私钥设置并显式设置密钥文件的路径,它也可以正常工作,但当我使用
默认私钥时,它就不能正常工作了,这显然是我的构建代理工作所需要的。

Git通过使用%HOMEDRIVE%/%HOMEPATH%形成一个路径来查找.ssh文件夹。我发现,即使%USERPROFILE%环境变量设置正确,这些变量也没有设置。如果%HOMEDRIVE%为空,则将使用%SYSTEMDRIVE%,因此默认情况下,它将在c:\(或任何系统驱动器)中查找.ssh文件夹

选择代理时,可以通过代理参数选项卡检查代理的环境变量,并通过生成的参数选项卡检查生成正在使用的内容

解决方案1 在c中创建.ssh文件夹:

解决方案2 将%HOMEDRIVE%和%HOMEPATH%的环境变量设置为与用户配置文件所在的位置相匹配

解决方案3
git还可以使用%HOME%环境变量这是完整路径,即等于%USERPROFILE%

对我来说最简单的解决方案是:

  • 在管道的项目设置“SSH密钥”下上载(OpenSSH)密钥(如下所示):

    查看OpenSSH信息的资源链接(为什么/如何)

  • 然后在VCS根设置中,更新“身份验证设置”,如下所示:

    • 注:用户名为;“git”(参见第三参考资料)
  • 确保您的“获取URL”类似于git@bitbucket.org:ProjectName/RepositoryName.git“-(注意:此处需要Github等效项)

  • 添加新密钥(请参阅第一参考资料)

  • 资源:


    默认私钥
    在使用
    http://...
    url而非
    git@...

    我可以通过使用用户名/密码身份验证来解决这个问题,但我更愿意使用密钥。你明白了吗?没有=(仍在使用用户名/密码。@FMM我认为这与密码短语有关。您是否尝试过创建没有密码短语的SSH密钥对?@FMM您确实遇到了我的问题。您是否可以使用默认私钥解决此问题?