ssh
在哪里)它位于)。在Windows版Git的安装过程中,我正在使用标准的ssh.exe选项。如果我允许服务器上的密码验证(代替RSA),则安装程序运行正常。 #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
,请小心,因为来自stdout
的keyscan
(在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.exe
,puttygen.exe
,putty.exe
和plink.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%/.ssh
是C:/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
当然,您可以将路径更改为密钥所在的位置,记住要使用
\
作为分隔符。
评论
我有同样的问题,我可以使用随“ 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用户拥有的,它将不起作用
是的,所有文件和目录都是正确的所有者和权限