如何告诉Windows的Git在哪里可以找到我的私有RSA密钥?


487

我的Git设置在Linux上运行良好,但是当我尝试在Windows下进行设置(使用Windows的Git和TortoiseGit)时,我不知道将私钥SSH放在哪里(或者更好的是,如何知道ssh它在哪里)位于)。在Windows版Git的安装过程中,我正在使用标准的ssh.exe选项。如果我允许服务器上的密码验证(代替RSA),则安装程序运行良好。


我有同样的问题,我可以使用随“ Git For Windows”一起安装的“ Git Bash”程序将公用密钥作为“ root”使用ssh进入我的开发箱,但是我无法以“ git”身份登录即使我已将“ authorized_keys”文件从“ root”复制到“ git”用户,并正确设置了所有者和权限,也是如此。当“ root”使用完全相同的“ authorized_keys”文件时,为什么不能以“ git”身份登录。取而代之的是“ git”,它绕过了所有私钥,这些私钥与“ root”一起使用并要求输入密码。顺便说一下,这是一台Centos 5.5服务器。

@fuzzy棒棒糖:您对git用户的authorized_keys文件具有正确的权限吗?它应该是chmod 600,并且应该由git用户拥有。如果它是由root用户所拥有,它不会工作
丹·麦克莱恩

是的,所有文件和目录都是正确的所有者和权限

Answers:


486

对于Git Bash

如果您正在运行msysgit(我假设您正在运行)并且希望运行Git Bash(我建议通过TortoiseGit进行此操作,但现在我比GUI更倾向于使用CLI),则需要弄清楚Git的主目录是什么通过启动Bash,然后键入pwd(在Windows 7上,它将像C:\Users\phsr我想的那样)。在Git Bash中时,您应该mkdir .ssh

在拥有主目录和该.ssh目录下的文件夹之后,您想打开PuTTYgen并打开先前创建的密钥(.ppk文件)。打开密钥后,您想要选择Conversions -> Export OpenSSH key并将其保存到HOME\.ssh\id_rsa。在该位置拥有密钥后,Git Bash将识别并使用密钥。

注意:注释表示这并非在所有情况下都有效。您可能需要将OpenSSH密钥复制到Program Files\Git\.ssh\id_rsa(或Program Files (x86)\Git\.ssh\id_rsa)。

对于TortoiseGit

当使用TortoiseGit,你需要设置通过SSH密钥佩西的方向。您需要为使用TortoiseGit的每个存储库执行此操作。


4
在拥有存储库之前,resty的tortoisegit指令将不起作用(因为除非您对存储库进行操作,否则“ remote”配置设置不会出现),并且如果可以的话,您可能无法首先获取存储库” t验证您的身份以便从来源克隆。整rick
Kylotan

43
使用GitBash,我发现我必须将~/.ssh/id_rsa文件复制到Program Files\Git\.ssh\id_rsa-有点混乱,但是现在IntelliJ和Windows cmd可以推送到使用密钥身份验证的git存储库。
JP。

7
同样。我刚刚安装了git-for-windows,我是从cmd.exe运行它的。我需要把文件id_rsaid_rsa.pubc:\program files (x86)\Git\.ssh。该.ssh目录已经存在。谢谢,JP。
Cheeso 2012年

5
第二段是金色的。:)
比约恩(Bjørn)2012年

4
@Damon:应该id_rsa没有扩展名。那是文件名,而不是目录
Dan McClain

107

使用Git for Windows附带的内置SSH客户端,您需要设置HOME环境变量,以便Git SSH客户端可以找到密钥。

例如,在Windows Vista安装中,可以通过setx HOME c:\Users\admin\在命令行上执行此操作来完成。

只要您的私钥不受密码保护,这就是我的决定,并解决了Git的问题。如果要使用ssh-agent,则可以正常运行ssh-agent cmd.exe(尽管我从未这样做过)和ssh-add。

请注意,所有Git / SSH工具都应从cmd.exe运行,以免使窗口闪烁

如果这不能正常工作,则可以通过调整GIT_SSH来使用plink 。请参阅所有SVN + ssh教程;这基本上是您需要设置的管道。


16
这是我一直在寻找的内容,因为我试图使用Windows命令提示符而不是git bash。
约翰·鲁伊斯

不错,很容易解决,但是如果没有这个,很难弄清楚!
thaddeusmt 2012年

同样重要的是,在HOME =和c:\之间也不能有空格。:-)
Lutz 2012年

2
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use 取而代之的是cmd`。
trejder 2013年

2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy 2015年

54

您可以通过以下方式为TortoiseGit指定关键位置:

  • 打开资源管理器窗口。
  • 打开上下文菜单并浏览TortoiseGit设置
  • 在现在打开的窗口中,导航到Git远程
  • 在相应的输入框中,将路径设置为PuTTY键。

屏幕截图如下:

在此处输入图片说明


8
此外,如果您需要将私钥从其他格式转换为'.ppk'格式,则可以遵循THIS
Tariq M Nasim

它为我工作。
Maxim Eliseev 2014年

6
Git> Remote仅在成功克隆存储库后才会出现。
史蒂夫·投手

5
一个简单得多的解决方案是在git中(使用openSSH)设置一切正常运行,然后告诉TortoiseGit使用git使用的ssh.exe。请参阅stackoverflow.com/a/33328628/318317这样,您只需修复一次。
丹尼尔·罗斯

50

以前的答案都没有对我有用。最终这就是对我有用的东西。如果您知道要键入什么,它实际上很简单。不需要腻子。

  • 打开Git Bash提示
  • 输入“ ssh-keygen”
    • 接受默认位置
    • 选择一个空白的密码短语(因此只需按“输入”进入所有问题)
  • 现在将公共密钥复制到您的服务器,例如:scp〜/ .ssh / id_rsa.pub someuser@someserver.com:〜

这是您自己的计算机上完成的工作。现在ssh进入目标服务器,然后执行

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

而已!你完成了!在Git Bash中,执行以下测试:

ssh someuser@someserver.com ls

如果它列出了Git服务器上主目录中的文件,那么您就完成了!

对于GitHub,您没有外壳访问其服务器的权限,但是可以使用其网站上载密钥,因此对于“立即复制到您的服务器”这一点,请执行以下操作:

  • 在Git Bash中,键入“ cat〜/ .ssh / id_rsa.pub”,选择结果,然后将其复制到剪贴板。
  • 在GitHub网站上,转到“帐户设置”,“ SSH和GPG密钥”,单击“新SSH密钥”,然后粘贴密钥。

8
不要创建没有密码短语的密钥。就像将密码输入文本文件一样,不同之处在于每个人都知道私钥的默认位置。
GregB

14
您在回答错误的问题。Q是如何指向现有私钥。
Orangutech

7
@GregB,我这样看:任何为其创建无密码密钥的服务器都像笔记本电脑一样安全,这是笔记本电脑安全范围的扩展。实际上,甚至没有,因为我的主目录是加密的;-)因此,它和笔记本电脑上的加密主分区一样安全,我认为这足以保证对github的访问。(这可能会与您的看法有所不同!)
休·帕金斯

3
@GregB不要陷入妄想症!:]当然,使用密码保护的密钥比使用无密码的密钥安全得多,但是声称无密码的密钥与将密码存储在文本文件中一样容易破解,这显然是错误的。我已经看过许多指南,它们鼓励用户使用受密码保护的密钥,但是我从未见过有人声称没有密码就使用它们根本不安全。另外:某些系统不支持记住密码的解决方案,用户每次输入密码时都要输入密码并要求输入密码。这使得在这种情况下使用SSH密钥毫无意义。
trejder 2013年

4
出于与原始问题有所不同的对话目的,SSH密钥在密码上肯定比密码更安全,但是由于不加密SSH密钥而使安全性受到威胁。我个人的方法是在一天之初使用SSH代理来解锁我的密钥,该代理然后将解密的密钥保留在内存中,这样我就不必全天重新输入密码。正如@休·珀金斯(Hugh Perkins)所评论的那样,我在表述中,你们都比我/我们更了解您的安全要求:)。
GregB

38

如果您将msysgit与OpenSSH工具一起使用,则需要创建~/.ssh/id_rsa或创建一个~/.ssh/config指向您的密钥的Git配置。

这是Bitbucket的Git配置示例,该配置将使用正确的用户名以及默认密钥以外的其他密钥(以防您为SSH连接维护一个密钥,为Git帐户维护另一个密钥)。

〜/ .ssh / config

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

进入Git Bash后,您可以运行两个命令将密钥添加到当前会话的ssh-agent中,从而避免重复输入密钥的密码。

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

1
我这样做是针对github.com:主机github.com IdentityFile〜/ .ssh / github_rsa
Sarah Vessels

1
如果路径中有空格,则必须使用引号:IdentityFile“ / C / My Keys / key”
r03 2014年

我喜欢这种方式,因为这让我快速连接存在其他PC钥匙
基里尔Gusyatin

我的.gitconfig有几个部分。我应该在哪些部分放置这些主机?
史蒂夫·雅科文科

16

我只是设置%HOME%=%HOMEPATH%

这具有为登录到系统的所有用户工作的优势(他们每个人都有单独的.ssh文件夹)。

在Vista中:

  1. 右键单击计算机
  2. 选择属性
  3. 点击高级系统设置
  4. 单击环境变量
  5. 在底部(系统变量)中,单击“新建”。
  6. 对于变量名称类型:HOME
  7. 对于变量路径类型:%HOMEPATH%
  8. 点击确定

6
在我的情况下,我添加了HOME =%USERPROFILE%
igor,

1
请注意,其中%HOMEPATH%不包含驱动器号,因此,如果源代码不在,则C:需要C:添加%HOME%
Graeme Perrow'3

set %HOME%=%HOMEPATH%为我工作!谢谢!!

7

您的私钥需要添加到工作站上的SSH代理中。如何实现此目标可能取决于您所使用的git客户端,但是puTTY及其关联的代理(寻呼机)可能会帮您解决问题,这是官方二进制文件和源代码的链接:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


上面我说过,我正在Windows上使用Git,并且正在使用ssh.exe(打包成git)代替腻子。添加私钥必须有一些标准做法,但我似乎似乎不知道如何做。虽然切换软件确实可以允许我登录,但是必须有一种使用标准Git设置进行操作的方法,不是吗?
binaryorganic 2010年

对不起,我不能在Windows下工作,只能在Linux上工作。但是密钥必须在您的SSH代理中。是否存在agent.exe或类似内容?
Declan Shanaghy

1
是的,在Linux方面,设置是蛋糕。但不幸的是,我必须让它在Windows上运行。Windows框上的git / bin文件夹中有几个与ssh相关的可执行文件(ssh,ssh-add,ssh-agent,ssh-keygen和ssh-keyscan),但我不知道如何制作它们做任何事情。他们只是眨眼打开和关闭cmd窗口立即。我很沮丧
binaryorganic 2010年

8
Pageant确实为我解决了问题-我在“开始”菜单的“启动”文件夹(C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)中有一个指向的快捷方式"C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk",以便它在启动时加载我的SSH密钥,这使GIT“正常工作”:o)
Owen Blacker

@OwenBlacker OMFG!您绝对应该将此评论写为完整答案!这是这里唯一的解决方案,它实际上帮助了我并解决了我的问题!可惜,我只能给您+1!:]
trejder 2013年

6

就我而言,我在Docker容器中使用Windows的Git windowsservercore

我的Git由Chocolatey安装到C:\Program Files\Git

我必须C:\Program Files\Git\etc\ssh\ssh_config用此更新文件:

Host example.com
   Identityfile ~/.ssh/id_rsa

然后我可以使用来自 C:\Users\<user>\.ssh\id_rsa

如果将Windows的Git与Windows的OpenSSH一起使用。Git仍在使用自己的ssh

另外,如果你打算使用ssh-keyscan host.com > known_hosts的OpenSSH,要小心,因为从输出管道stdoutkeyscan(在Windows上)改变编码UCS-2,但OpenSSH的只能读取UTF-8!因此,请确保更改known_hosts文件编码。


这很有帮助,但是对于使用id_dsa密钥的任何人,您还需要在主机下添加“ PubkeyAcceptedKeyTypes ssh-dss”。
Michael Russo

4

好的,我看着的建议.

但是,我认为将私有SSH密钥放在公用文件夹中并不是一个好主意,因此我开始寻找knownhost的位置。

因此,如果您想正确保护SSH密钥,则需要将密钥放在以下目录中:

对于Windows 7、8和8.1 32位:

C:\ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

对于Windows 7、8和8.1 64位:

C:\ Users \\ AppData \ Local \ VirtualStore \ Program Files(x86)\ Git \


这是我的Win7机器上最简单的解决方案。和您一样,我也在搜索known_hosts。果然在C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh。通过将我的密钥文件(id_rsa)放在该目录中,ssh可以毫无疑问地找到它。我做了一些阅读-这是Windows处理试图写入禁止区域(例如“ C:\ Program Files \”)的(旧版)软件的方式,因此Git的ssh完全不知道它正在写入Windows的VirtualStore目录正在透明地进行处理。至少这些文件属于用户!
DaveGauer

4

最有效的方法是使用Pageant,因为它将使您在会话开始时只写一次密码,而不是每次推送都写密码。这里的所有答案都太短,因此我将在此处发布详细的指南:

  1. 下载pageant.exeputtygen.exeputty.exeplink.exe从PuTTY的网站。将它们放在C:\puttyTools目录中。
  2. 运行puttygen.exe
  3. 单击按钮Generate
  4. 按照程序要求您在窗口的顶部四处摆动鼠标,直到进度条已满。
  5. 提供密码,并在随后的文本框中重复该密码。
  6. 点击“保存私钥”。将它们保存在的通常目录是%USERPROFILE%\_ssh(在我的计算机中,该目录映射到C:\Users\andres\.ssh\)。所谓的密钥并不重要,但出于演示目的,我将其称为github.ppk。该文件的扩展名应为.ppk。
  7. 将文本复制到PuTTYgen顶部的文本框中,将其标记为文本,然后将其Public key for pasting into OpenSSH authorized_keys file粘贴到GitHub设置中的新SSH密钥中。给它一个标题,描述密钥在哪台计算机上(例如“工作笔记本电脑”)。
  8. 运行pageant.exe,将出现一个新的系统托盘图标。
  9. 右键单击图标->添加密钥。
  10. 找到您的ppk文件,输入密码。
  11. 创建这些新的用户环境变量(Environ通过WindowsMenu 查找应用程序,它将找到Edit environment variables for your account):GIT_SSH = "C:\puttyTools\plink.exe"SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. 打开putty.exe并尝试连接到托管Git存储库的主机。例如,尝试通过SSH连接到github.com,然后对话框将询问您是否接受服务器的指纹:单击“是”。
  13. 运行MINGW64Git控制台的新实例,并通过编写命令验证环境变量是否在那里env | grep -i ssh
  14. 你应该准备好了。尝试从您的主机使用Git + SSH协议进行克隆。

(最初从这两个指南中提取,我将它们合而为一:如何为Windows设置Git配置MinGW-W64 + MSYS以使用PuTTY Plink / Pageant。)


3

当将GitHub for Windows和Git GUI for Windows混合使用时,您可能会遇到Git GUI不断提示您输入用户名和密码的问题。解决方法是将远程URL https:(这是Windows的GitHub创建的)更改为Git协议。在.git配置文件的目录中,找到:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

更改为:

[remote "origin"]
    url = git@github.com:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*

是的,这很烦人。对于Windows GUI,使用github克隆存储库是很自然且容易的,但是在git shell之外使用git cui失败。我不知道git shell中的git命令如何与https url一起使用...
hiroshi

SSH始终是前缀git@{SERVER URL}吗?
nmz787

是的,据我所见:)
IDisposable

已经有了这一点-仍然要求我所有的时间
伊恩·固安捷

3

文件的标准位置在中%USERPROFILE%\.ssh

%USERPROFILE%在Unix中等于$ HOME(通常映射为c:\users\youruserid)。

如果您使用的是Git随附的SSH工具,它们是标准的命令行Unix风格的工具,则可以在此处使用类似我的脚本的工具在所有shell上使用ssh-agent。


对于未来的读者,%USERPROFILE% is the equivalent of $HOME不是相当于$HOME。很多不良作用的Linux应用程序移植到Windows款待t时的两个相同的E但他们应该不会被同等对待。
米卡·佐尔图

米迦,你能告诉我在意图上的差异吗?而且,即使意图不同,但似乎所有工具都将其一并使用,那么它是否不等效?
埃里克·

%USERPROFILE%在Windows上以与$HOME在Linux上相同的方式使用的工具违反了针对Windows开发的有据可查的最佳实践/建议(MS早已发布并随时间更新)。有许多工具可以执行此操作,但是跟在它们后面的参数与参数“池中的X pees”非常相似,因此我们也应该这样做。 USERPROFILE是用户存储他们创建/保存的文档的位置(例如,保存对话框)。 APPDATA用于每个用户的配置数据。 LOCALAPPDATA用于每个用户的缓存和大文件。 PROGRAMDATA用于计算机范围的配置和缓存。
米卡·佐尔图

通常,唯一与USERPROFILE不兼容的工具是Linux开发人员编写的工具,然后移植到Windows。作为开发人员,您可能会使用很多这样的工具,因此感觉就像“每个人都在做”,但是在开发工具生态系统之外,大多数Windows应用程序实际上都是优秀的公民。即使是Microsoft,有时也会犯错,没有把事情放到正确的位置(他们是一家大公司),尽管通常在您向他们指出时,他们会努力解决问题并遵循OS准则。
米卡·佐尔图

1
(很抱歉,注释上的StackExchange字符限制)。这是有关文件夹的更多详细信息,并简要介绍了其中的内容。也有其他资源,包括更多消耗性博客文章,但这一篇提供了最高的技术准确性:technet.microsoft.com/zh-cn/library/cc749104
v=ws.10).aspx

2

我有类似的问题,这里没有答案可以解决问题。原来,我的密钥对最初是用空密码生成的。(我知道,傻瓜。)

创建新的密钥对并将公钥上传到GitHub后,一切又开始正常工作。


1
这个。ughhhhhhhhhhhh。再见2小时
独家新闻


1

您可以这样指定密钥的路径和密钥文件的名称(在Ubuntu上)。例如:

ssh -i /home/joe/.ssh/eui_rsa

这绝对可以解决问题,并允许您将密钥存储在所需的任何位置。
DaveGauer 2015年

问题特别是关于Windows的。我的Ubuntu机器上的git像这样工作,但是我不知道GIT_SSH_COMMAND要在Windows机器上设置什么。
mjaggard

1

Pageant(与PuTTY捆绑包一起提供的SSH代理)为我解决了这个问题。

我在“开始”菜单的“启动”文件夹(C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)中有一个指向的快捷方式"C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk",以便它在启动时加载我的SSH密钥,这使Git“正常工作”:o)


4
我认为您还需要其他一些正确设置才能使其正常工作(例如,我认为将GIT_SSH设置为TortoisePLink.exe吗?),尽管过去它对我有用,但我经常在其他计算机上遇到问题。:-(
Simon East

我从Pageant中得到“无法打开文件” :(我知道它在TortoiseGit上使用时正确设置了:(
Ian Grainger

1

很多答案都这样说,但是对我来说还不够快!

在Windows中使用msys(标准Windows控制台) C:\Users\{you}\.ssh\id_rsa

基本上,它不会打扰扫描已安装的密钥(至少不在我的新笔记本电脑上),因此特别需要 id_rsa

我遇到了这个想要在Windows 10 64位的ruby MSYS CLI中克隆一些私有工作仓库的情况


0

如果您使用的是Windows 7/8,则应在C:\ Users \ Your_User_Name.ssh中查找,只需将id_rsa文件复制并粘贴到此处,即可立即使用。


0

在Windows上使用SSH时,我犯了一个错误,就是当我尝试通过Git Bash客户端使用密钥时,〜/ .ssh中的所有文件都具有错误的权限,但是并未尝试告诉我这是一个错误。问题。

作为测试,请确保已将〜/ .ssh目录中的所有内容都设置为chmod 600。


0

如果您对Windows计算机具有必要的权限,并且您的策略允许这样做,那么我建议您安装Cygwin(https://cygwin.com/),尤其是考虑到您具有Linux的使用经验。Cygwin使您可以像在其他任何Linux / Unix计算机上一样处理ssh-key。它提供了对几乎所有Linux CLI工具的访问。


1
提出这样的建议作为评论是完全合理的。但是,由于该问题明确要求将git用于Windows,因此您应该投下反对票以将其发布为答案。

0

TortoiseGit允许您指定克隆存储库时要使用的密钥。只需检查“ Load Putty Key”并浏览到.ppk文件,如屏幕截图所示:https://i.stack.imgur.com/lAyzT.png


如果禁用,则检查Settings... -> Network -> SSH client设置为C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Nikita Bosik '17


0

阅读对Declan答案的评论,尝试首先打开命令提示符(开始→ 运行cmd),然后导航到该git / bin文件夹并运行ssh-keygen。从理论上讲,这将生成一个RSA密钥并将其放置在适当的目录中。然后,您只需要找到它并与世界分享您的公钥即可。

窗口“闪烁”的原因是因为Windows运行该程序,并且在执行该程序时,它关闭命令提示符,并认为您确实需要输出时就使用它完成了。


0

在Windows上使用Git Gui v0.17,我单击了以下菜单命令: 帮助显示SSH密钥

出现一个对话框,标题为Your OpenSSH Public Key。我生成了一个密钥,并将其复制到剪贴板。然后,从第三步开始,我继续遵循githelp上的setup-ssh说明。之后,Git Gui与GitHub进行了静默通信-无需输入任何凭据。


0

在Windows 7系统上,Git Gui在userprofile/.ssh文件夹中或更具体地寻找RSA密钥c:/users/yourusername/.ssh/

我设置的棘手部分是让hostmonster上的共享主机接受密钥。我可以使用它的唯一方法是使用Git Gui创建密钥对(不使用密码),然后通过控制面板ssh和管理密钥复制并粘贴公共密钥。

首先,您必须在Git Gui中创建菜单项,方法是进入帮助菜单,显示SSH密钥,然后选择生成密钥。现在,您将在.ssh目录中拥有两个新密钥。打开.pub文件并复制内容。

登录到共享主机上的控制面板,然后进入SSH管理SSH密钥导入密钥。粘贴到“ 公共”框中,并确保您使用不带扩展名的正确名称命名-mine was id_rsa。现在,您必须使用管理授权链接对密钥进行授权,这样它将被串联到authorized_keys文件中。

现在,您的Git Gui和Git Bash应该能够使用SSH进行推送,而无需键入密码。奇怪的是,我能够在自己的运行Linux的服务器上通过Git Bash和Git Gui来使用SSH进行推送,这只是让我感到满意的共享主机。我希望这能对某人有所帮助,因为我花了数小时的反复试验来提出这个问题-而且非常简单!


0

如果您在Windows上使用Git命令行,则可以执行以下操作:

打开cmd.exe并执行setx HOME c:\PATH_TO_PRIVATE_KEY

在其中创建一个新文件夹.ssh(如果不存在),c:\PATH_TO_PRIVATE_KEY然后将id_rsa文件(您的私钥)复制到其中。

做完了 现在,您可以正常使用Git命令行了。


0

我的msysgit OpenSSL / Bash Git经验(不是PuTTY的plink)是.ssh/文件夹的搜索顺序如下。

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

因此,为什么这么多的人建议设置HOME其他人之一不是您所期望的。更重要的是,您可以自己检查;调试ssh -v对使用公钥身份验证的服务器的使用,如下所示:

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

我们发现ssh搜索的驱动器晦涩难懂,以前的答案似乎都无法解释我们看到的内容。

有时%HOMEDRIVE%%HOMEPATH%是映射的网络驱动器(例如H:/)当有网络/文件服务器的问题,其导致不必要的故障,即使%USERPROFILE%/.sshC:/Users/Username/.ssh和局部具有密钥。设置%HOME%%USERPROFILE%停止它查看远程主驱动器。


0

您还可以加载PuTTY代理(寻呼机),并添加使用PuTTY为服务器生成的私钥。

Git识别出这一点并将其用于推/拉。


0

我根据需要在Windows上使用TortoiseGit以及Git Bash。我已经将所有内容添加到TortoiseGit中,并且工作正常,但是即使密钥在正确的目录中,Git Bash也没有选择它。事实证明,我必须从Git Bash进行此操作:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

当然,您可以将路径更改为密钥所在的位置,记住要\\用作分隔符。


0

如果使用Windows的Git,则在生成SSH密钥后,必须将SSH密钥添加到ssh-agent。

请参阅生成新的SSH密钥并将其添加到ssh-agent中

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa

欢迎使用服务器故障。这个问题已经有几年前被广泛接受的答案。继续寻找更新的问题或可以显着改善的问题。
马修·韦特莫尔

1
广为接受的答案对我没有用,而这个答案却对我有用。我相信这可能会帮助某人知道必须将密钥添加到ssh代理,并且可以使用2行指令来完成
Matoeil
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.