我的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用户拥有的,它将不起作用

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

#1 楼

对于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的每个存储库执行此操作。

评论


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

– Kylotan
2011年10月6日19:59

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

– JP。
2012年5月23日12:17

同样。我刚刚安装了git-for-windows,我从cmd.exe运行它。我需要将文件id_rsa和id_rsa.pub放入c:\ program文件(x86)\ Git \ .ssh中。 .ssh目录已经存在。谢谢,JP。

– Cheeso
2012年7月26日在1:07

第二段是金色的。 :)

–比约恩
2012年8月31日10:51



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

–丹·麦克莱恩
2012年11月27日13:26

#2 楼

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

例如,在Windows Vista安装中,这可以通过在命令行上发出setx HOME c:\Users\admin\来完成。如果要使用ssh-agent,则可以像往常一样运行ssh-agent cmd.exe(尽管我从未这样做过)和ssh-add。

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

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

评论


这是我一直在寻找的内容,因为我尝试使用Windows命令提示符而不是git bash。

–约翰·鲁伊斯(John Ruiz)
2012年3月5日18:33

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

– thaddeusmt
2012年4月13日20:39

同样重要的是,HOME =和c:\ ...之间不能有空格。Oct的解决方案为我解决了问题。 :-)

– Lutz
2012年4月21日在23:09

setx HOME c:\ Users \ admin`命令在Git Bash中似乎不起作用。您必须改用cmd`。

– Trejder
2013年12月12日上午8:01



+1 GIT_SSH = c:\ pathto \ plink.exe

–尼克·格莱利(Nick Grealy)
2015年8月10日4:06



#3 楼

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


打开资源管理器窗口。
打开上下文菜单并导航TortoiseGit→设置

在现在打开的窗口中,导航到Git→远程

在相应的输入框中设置您的PuTTY键的路径。 />

评论


此外,如果您需要将私钥从其他格式转换为“ .ppk”格式,则可以按照以下步骤操作

–塔里克·纳西姆(Tariq M Nasim)
13年12月18日在11:04



它为我工作。

– Maxim Eliseev
2014年9月10日下午16:53

Git> Remote仅在成功克隆存储库后才会出现。

–史蒂夫投手
15年7月23日在9:18

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

–丹尼尔·罗斯(Daniel Rose)
16-2-4在16:04



#4 楼

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


打开Git Bash提示符
键入'ssh-keygen'


接受默认位置
选择一个空白密码
(因此只需按“ enter”进入所有问题”)


现在将公共密钥复制到您的服务器,例如:
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密钥”,然后粘贴密钥。


评论


不要创建没有密码短语的密钥。这就像将密码输入文本文件一样,只是每个人都知道私钥的默认位置。

– GregB
13年4月11日在6:10

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

– Orangutech
13年4月17日在18:18

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

–休·珀金斯(Hugh Perkins)
13年6月21日在5:38

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

– Trejder
2013年12月12日上午8:33

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

– GregB
2013年12月13日在18:09

#5 楼

如果您将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


评论


我这样做是为了github.com:托管github.com IdentityFile〜/ .ssh / github_rsa

–萨拉船
2013年6月22日18:28

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

–r03
2014年8月1日上午10:31

我更喜欢这种方式,因为这使我可以快速连接其他PC上存在的密钥

– Kirill Gusyatin
17年6月30日在7:10

我的.gitconfig有几个部分。我应该在哪些部分放置这些主机?

–史蒂夫·雅科文科(Steve Yakovenko)
17-10-8在10:47

#6 楼

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

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

在Vista:


右键单击计算机
选择属性
单击高级系统设置
单击环境变量
在底部(系统变量)单击“新建”
对于变量名称类型:HOME
对于变量路径类型:%HOMEPATH%
单击“确定”


评论


就我而言,我已添加HOME =%USERPROFILE%

–igor
13-10-14在11:41

请注意,%HOMEPATH%不包含驱动器号,因此,如果源不在C:上,则需要在C:之前加上%HOME%。

– Graeme Perrow
16 Mar 2 '16 at 12:36

设置%HOME%=%HOMEPATH%对我有用!谢谢!!

–番gy藤
18/12/19在18:09

#7 楼

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

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

我必须使用以下命令更新文件C:\Program Files\Git\etc\ssh\ssh_config

Host example.com
   Identityfile ~/.ssh/id_rsa


然后,如果您将Windows的Git与Windows的OpenSSH一起使用,则可以使用C:\Users\<user>\.ssh\id_rsa的密钥。 Git仍在使用自己的ssh。此外,如果您打算使用OpenSSH的ssh-keyscan host.com > known_hosts,请小心,因为来自stdoutkeyscan(在Windows上)的管道输出会将编码更改为UCS-2,但是OpenSSH只能读取UTF-8!因此,请确保更改known_hosts文件的编码。

评论


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

–迈克尔·鲁索(Michael Russo)
17年11月30日在16:47

#8 楼

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

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

评论


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

– Binaryorganic
2010-10-25 21:32

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

– Declan Shanaghy
2010-10-25 22:01

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

– Binaryorganic
10-10-26在1:13

Pageant确实为我解决了这个问题-我的“开始”菜单的“启动”文件夹(C:\ Users \ owen.blacker \ AppData \ Roaming \ Microsoft \ Windows \“开始”菜单\ 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)
2012年6月27日12:51

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

– Trejder
2013年12月12日上午9:01

#9 楼

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

%USERPROFILE%与Unix中的$ HOME等效(通常映射到类似c:\users\youruserid的东西)。

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

评论


对于将来的读者,%USERPROFILE%等同于$ HOME,而不等同于$ HOME。移植到Windows的许多性能不佳的Linux应用程序将两者视为相同,但是不应将它们视为相同。

–米卡·佐尔图(Micah Zoltu)
17年8月30日在18:23

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

–埃里克·布莱德
17年8月31日在19:54

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

–米卡·佐尔图(Micah Zoltu)
17年8月31日在20:32

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

–米卡·佐尔图(Micah Zoltu)
17年8月31日在20:34



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

–米卡·佐尔图(Micah Zoltu)
17年8月31日在20:39

#10 楼

最有效的方法是使用Pageant,因为它将使您在会话开始时只写一次密码,而不是每次推送都写密码。这里的所有答案都太短了,因此我将在此处发布详细的指南:从PuTTY的网站下载pageant.exeputtygen.exeputty.exeplink.exe。将它们放在C:\puttyTools目录中。
运行puttygen.exe
单击按钮Generate。
在窗口顶部四处移动鼠标,直到进度条填满为止,因为程序会要求您执行此操作。
提供密码,并在随后的文本框中重复该密码。
单击“保存私钥”。将它们保存到的通常目录是%USERPROFILE%\_ssh(在我的计算机中,映射到C:\Users\andres\.ssh\)。
密钥的名称无关紧要,但是出于演示目的,我将其命名为github.ppk。该文件的扩展名应为.ppk。
将文本复制到PuTTYgen的顶部文本框中,将其标记为Public key for pasting into OpenSSH authorized_keys file,然后将其粘贴到GitHub设置中的新SSH密钥中。给它一个标题,描述密钥在哪台计算机上运行(例如“工作笔记本电脑”)。
运行pageant.exe,将出现一个新的系统托盘图标。
右键单击该图标->添加密钥。
找到您的ppk文件,输入密码。
创建这些新的用户环境变量(通过WindowsMenu查找应用程序Environ会找到Edit environment variables for your account):GIT_SSH = "C:\puttyTools\plink.exe"SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"

打开putty.exe并尝试连接到托管Git存储库的主机。例如,尝试通过SSH连接到github.com,然后会出现一个对话框,询问您是否接受服务器的指纹:单击YES。
运行MINGW64 Git控制台的新实例,并验证通过编写命令env | grep -i ssh可以找到环境变量。
您应该已经准备就绪。尝试从您的主机使用Git + SSH协议进行克隆。

(最初从这两篇指南中我合并而成:如何为Windows设置Git并配置MinGW-W64 + MSYS以使用PuTTY Plink / Pageant。)

#11 楼

在将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
16 Mar 5 '16 at 1:18

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

–nmz787
16 Apr 15'在20:41

是的,据我所见:)

–IDisposable
16年4月19日在4:11

已经有这个-一直在问我

–伊恩·格兰杰(Ian Grainger)
17年8月2日在9:04

这不是问题的答案

–彩虹
7月4日21:05

#12 楼

我已经通过创建


〜/ .ssh / config


文件并放置:

IdentityFile C:\Users\adria\.ssh\mysshkey


评论


我的上帝在没有以前的任何答复的情况下为我工作!

–彩虹
7月4日21:08

#13 楼

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

一旦我创建了一个新的密钥对并将公钥上传到GitHub,事情就又开始起作用了。

评论


这个。 ughhhhhhhhhhhh。再见2小时

–独家新闻
2015年2月5日在10:36

#14 楼

好的,我看了关于.的建议。 br />
因此,如果您想正确保护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完全不知道它正在写入VirtualStore目录Windows。正在透明地进行处理。至少这些文件属于用户!

– DaveGauer
15年4月29日在23:40

#15 楼

从Windows服务帐户运行ssh时,以下答案也适用于此问题:Jenkins(Windows服务),通过SSH通过Git进行操作

评论


通过提供的链接,我可以进行Jenkins设置。我需要将HOME环境变量设置为Git程序路径,该路径包含在其中创建了我的SSH密钥的.ssh目录。

–Spechal
2013年9月3日18:52

#16 楼

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

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


评论


这绝对解决了问题,并允许您将密钥存储在任何需要的位置。

– DaveGauer
15年4月29日在23:26

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

– mjaggard
17年9月6日在19:12

#17 楼

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)

评论


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

–西蒙东
2014年6月12日下午4:08

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

–伊恩·格兰杰(Ian Grainger)
17年8月2日在9:02

#18 楼

在运行Windows 10的情况下,运行时我无法使选美生成的SSH密钥起作用(至少对于命令行上的Git,使用SourceTree我没有问题):

git push origin master


所以我的解决方案:


我打开了“ Git Bash”

Ran

ssh-keygen



已确认的密钥已存在
ls ~/.ssh

在笔记本中打开id_rsa.pub,选择所有内容
在Bitbucket,https中添加了新密钥://bitbucket.org/account/user/myusername/ssh-keys/
将内容粘贴和粘贴到密钥字段->添加密钥

之后,命令行Git起作用了。看来它想要旧的PEM格式,因为如果我尝试将此密钥导入到选页中,它的含义就足够了。

#19 楼

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

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

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

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

#20 楼

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

#21 楼

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

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

#22 楼

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

评论


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

– rob
17年5月16日在8:33

#23 楼

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

评论


如果禁用,请检查设置...->网络-> SSH客户端设置为C:\ Program Files \ TortoiseGit \ bin \ TortoiseGitPlink.exe

– Nikita Bosik
17年11月1日11:49



#24 楼

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

窗口“闪烁”的原因是Windows运行该程序,并在执行该程序时关闭命令提示符。 ,当您确实需要输出时,以为您已完成操作。

#25 楼

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

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

#26 楼

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

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

要从头开始,您必须通过在菜单Help(帮助),Show SSH key(显示SSH密钥)和Generate Key(生成密钥)中创建密钥。现在,您将在.ssh目录中拥有两个新密钥。打开.pub文件并复制内容。

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

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

#27 楼

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

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

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

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

#28 楼

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


%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%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%可以停止查看远程主驱动器。

#29 楼

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

Git会识别出该私钥并将其用于推/拉。

#30 楼

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

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


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