我如何告诉Windows的Git在哪里可以find我的私人RSA密钥?

我的GIT设置在Linux下运行良好,但是当我尝试在Windows下设置(使用Git for Windows和TortoiseGit)时,我不知道在哪里放置我的私有ssh密钥(或者更好的是,如何告诉ssh在哪里它位于)。 我在安装Git for Windows时使用了标准的ssh.exe选项。 如果我允许在服务器上进行密码validation(代替rsa),则安装运行正常。

为Git Bash

如果你正在运行msysgit(我假设你是),并且正在运行Git Bash(我推荐使用TortoiseGit,但是现在比GUI更倾向于CLI),你需要弄清楚你的主目录是用于Git Bash通过启动然后键入pwd (在Win7上,它会像C:\Users\phsr我认为)。 当你在git bash中,你应该mkdir .ssh

在拥有主目录和一个.ssh文件夹之后,您需要打开PuTTYgen并打开先前创build的密钥(.ppk文件)。 一旦您的密钥打开,您需要selectConversions -> 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的每个版本库都这样做

使用Git for windows附带的内置SSH客户端,您需要设置HOME环境variables,以便Git SSH客户端可以find密钥。

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

让我的一天,并解决了与Git的问题,只要你的私钥没有密码保护。 如果你想使用ssh-agent,那么你可以像往常一样运行ssh-agent cmd.exe(尽pipe我从来没有这样做)和ssh-add。

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

如果这不能正常工作,使用plink可能可以通过调整GIT_SSH来实现。 参考所有的svn + ssh教程,这与你需要设置的基本相同。

您可以通过以下方式指定Tortoisegit的密钥位置:

  • 打开资源pipe理器窗口。
  • 打开Contextmenu并导航TortoiseGit > Settings
  • 在现在打开的窗口中导航到Git > Remote
  • 在相应的input框中设置您的腻子键的path。

屏幕拍摄如下:

在这里输入图像描述

上面的答案都没有为我工作。 这到底是为了什么。 这实际上很简单,如果你知道要input什么。 它不需要腻子。

  • 打开一个git bash提示符
  • 键入'ssh-keygen'
    • 接受默认的位置
    • select一个空白密码(所以只需按“input”所有问题)
  • 现在复制到你的服务器,例如:scp〜/ .ssh / id_rsa.pub [email protected]:〜

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

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

而已! 你完成了! 从git bash中,执行以下操作来testing:

 ssh [email protected] ls 

如果它在git服务器上的主目录中列出了这些文件,那么你就完成了!

编辑:对于github,你没有shell访问他们的服务器,但你可以上传密钥使用他们的网站,所以为'现在复制到您的服务器',做:

  • 在git bash中,input'cat〜/ .ssh / id_rsa.pub',select结果并将其复制到剪贴板
  • 在github网站上,进入“账户设置”,“ssh keys”,点击“添加ssh密钥”,然后粘贴密钥

如果你在OpenSSH工具中使用msysgit,你需要创build〜/ .ssh / id_rsa,或者在〜/ .ssh / config中创build一个指向你的密钥的gitconfiguration。

下面是一个使用正确的用户名和默认密钥以外的密钥(如果你为SSH连接维护一个密钥,另一个用于git帐户)的bitbucket的Gitconfiguration的例子。

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

一旦进入git bash,你可以运行两个命令将你的密钥添加到当前会话的ssh-agent中,以避免重复input密钥的密码。

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

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

这有利于所有login到系统的用户(他们每个人都得到单独的.ssh文件夹)。

在Vista中:

  1. 用鼠标右键单击计算机
  2. select属性
  3. 点击高级系统设置
  4. 点击环境variables
  5. 在底部(系统variables)点击新build
  6. 对于variables名称types:HOME
  7. 对于可变pathtypes:%HOMEPATH%
  8. 点击OK

您的私钥需要添加到工作站上的SSH代理上。 你如何实现这一点可能取决于你使用的是什么git客户端,不过puTTY及其相关的代理(pageant)可能会为你做诡计,下面是官方二进制文件和源代码的链接:

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

奥克,我看着他的消息

但是放置在我的公用文件夹中的私人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 \

我希望这可以帮助你们中的一些人

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

我有类似的问题,在这里没有答案解决了这个问题。 事实certificate,我的密钥对最初是用一个空的密码生成的。 (我知道,哑巴)

一旦我创build了一个新的密钥对,并将公钥上传到github,事情又开始了。

你可以像这样(在Ubuntu上)指定密钥文件的path和密钥文件的名称。 例如:

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

我最初发表这个评论,但有人build议我应该把它作为一个正确的答案。

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

我在Start Menu的Startup文件夹( 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)

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

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

改成

 [remote "origin"] url = [email protected]:**username**/**reponame**.git fetch = +refs/heads/*:refs/remotes/origin/* 

在Windows v0.17上使用Git Gui,我点击了下面的菜单命令

帮助>显示SSH密钥

出现一个对话框标题为您的OpenSSH公钥 。 我生成了一个键并将其复制到剪贴板。 然后我继续从第三步开始,按照githelp上的setup-ssh说明进行操作 。 之后,Git Gui悄悄地与Github沟通 – 无需input任何凭据。

如果你使用的是Windows 7/8,你应该看看C:\ Users \ Your_User_Name.ssh。只需在这里复制并粘贴你的id_rsa文件,它就可以直接使用了。

在我的情况下,我在widowsservercore容器widowsservercore使用Git的窗口

我的git通过chochcolately安装到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的openSSH for Windows一起使用git ,我会再添加一个细节。 git仍在使用它自己的ssh
另外如果你打算使用ssh-keyscan host.com > known_hosts来自openSSH ssh-keyscan host.com > known_hosts ,要小心,因为来自keyscan stdout输出的stdout (在windows上)会改变encodingUCS-2但是openSSH只能读取utf-8 ! 所以一定要改变known_hosts文件的编码。

阅读你的评论Declan的答案,尝试打开命令提示符(开始 – >运行 – > cmd),然后导航到该git / bin文件夹并运行ssh-keygen。 理论上这将产生一个RSA密钥,并把它放在适当的目录中。 那么你只需要find它并与世界分享你的公钥。

窗口“闪烁”的原因是因为windows运行的是程序,执行的时候会closures命令提示符,当你真的需要输出的时候,会认为你已经完成了。

希望有所帮助!

在我的Windows 7系统上,GitGui在userprofile / .ssh文件夹或更具体的c:/users/yourusername/.ssh/中查找RSA密钥

我的设置棘手的部分是让hostmonster的共享主机接受密钥。 唯一的办法就是使用GitGui创build密钥对(没有密码),然后通过控制面板ssh复制粘贴公钥,pipe理密钥。

要从头开始,您必须先通过帮助,显示SSH密钥,然后生成密钥来在GitGui中创build密钥。 现在您将在.ssh目录中有两个新的密钥。 打开.pub文件并复制内容。 login共享主机上的控制面板,进入ssh,pipe理ssh密钥,导入密钥。 粘贴到公共框中,并确保你没有扩展名为正确的名称 – 我的是id_rsa。 现在您必须使用pipe理授权链接来授权密钥,所以它将被连接到authorized_keys文件中。

现在你的GitGui和你的GitBash应该能够使用ssh而不必input密码。 奇怪的是,我能够通过git bash和git gui使用ssh来运行Linux,而这正是我所使用的共享主机。 希望这可以帮助别人,因为花了我几个小时的试验和错误来想出这个 – 其如此简单!

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

%USERPROFILE%相当于Unix中的$ HOME。 (通常映射到类似于c:\users\youruserid

如果您使用的是git附带的ssh工具,它们是标准的命令行unix风格的工具,那么您可以在这里使用类似我的脚本的东西,以在所有shell中使用ssh-agent。

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

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

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

完成,现在你可以正常使用git commanline了

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

就像一个testing,确保你已经把你的〜/ .ssh目录中的所有内容都设置为chmod 600。

如果您在Windows计算机上拥有必要的权限,并且您的策略允许,那么我会build议安装Cygwin( https://cygwin.com/ ),特别是考虑到您有使用Linux的经验。 Cygwin将可以像在任何其他Linux / Unix机器上一样处理您的ssh密钥。 它可以访问几乎所有的Linux的cli工具。

您也可以加载Putty Agent(pageant)并添加您使用Putty为服务器生成的私钥。

Git认识到这一点,并使用它推/拉。

我的msysgit OpenSSL / Bash GIT体验(不是Putty的plink)是.ssh/文件夹的search顺序如下。

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

因此,为什么有这么多人build议设置HOME如果其中一个不是你所期望的。 更重要的是你可以自己检查一下,使用ssh -vdebugging一个使用publickeyauthentication的服务器,如下所示:

 $ ssh -v [email protected] 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在一个隐蔽的驱动器中search,没有一个答案似乎解释了我们所看到的。

有时%HOMEDRIVE%%HOMEPATH%是一个映射的networking驱动器(例如H:/ ),即使在%USERPROFILE%/.sshC:/Users/Username/.ssh且存在networking/文件服务器问题时也会导致不必要的故障关键在本地。 将%HOME%设置为%USERPROFILE%停止查看远程主驱动器。

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

我已经通过创build解决了上述问题

的〜/ .ssh /configuration

文件并把:

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

我在Windows上使用TortoiseGit以及git bash ,这取决于需要。 我已经添加到TortoiseGit一切,它的工作正常,但即使密钥在正确的目录下, git bash并没有拿起它。 原来我不得不这样做从git bash

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

你当然可以改变你的钥匙所在的位置,记住用\\作为分隔符。

最有效的方式就是使用Pageant,因为它可以让你在会话开始时只写一次密码,而不是每次都按下。 这里的所有答案都太短了,所以我会在这里发表一个详细的指导:

  1. 从Putty的网站下载pageant.exeputtygen.exeputty.exeplink.exe ,把它们放在C:\puttyTools目录下。
  2. 运行puttygen.exe
  3. 点击button“生成”。
  4. 在程序要求你做的时候,在窗口顶部摆动鼠标,直到进度条满了。
  5. 提供一个密码,并在随后的文本框中重复。
  6. 点击“保存私钥”。 通常的目录保存这些是%USERPROFILE%\_ssh (在我的电脑中这映射到C:\Users\andres\.ssh\ )。 不要紧,你说的关键,但为了演示的目的,我打算把它叫做github.ppk。 这个文件应该有.ppk的扩展名。
  7. 将文本复制到PuTTYgen的顶部文本框中,标记为Public key for pasting into OpenSSH authorized_keys file文本Public key for pasting into OpenSSH authorized_keys file并粘贴到Github的新设置中。 给它一个标题,描述什么机器的关键(例如“工作笔记本电脑”)。
  8. 运行pageant.exe ,会出现一个新的系统托盘图标。
  9. 右键点击图标 – >添加键。
  10. find您的ppk文件,input您的密码。
  11. 创build这些新的用户环境variables(通过WindowsMenu查找应用程序Environ ,它将findEdit environment variables for your account ): GIT_SSH = "C:\puttyTools\plink.exe"SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. 打开putty.exe并尝试连接到托pipegit存储库的主机,例如尝试通过SSH连接到github.com,并且对话框会询问您是否接受服务器的指纹:单击YES。
  13. 运行MINGW64 git控制台的新实例,通过编写命令env | grep -i sshvalidation环境variables是否在那里 env | grep -i ssh
  14. 你应该全部设置,尝试从你的主机克隆与git + ssh协议。

(原来是从这两个指南中提取的,我把它们合在一起: https : //gist.github.com/dmangiarelli/1a0ae107aaa5c478c51e#ssh-setup,https : //rperki.blogspot.hk/2014/09/configure-mingw-w64msys -to-use-putty.html )

如果使用git for windows,一旦生成了ssh密钥,

您必须将您的SSH密钥添加到ssh-agent

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

 eval $(ssh-agent -s) 

//告诉密钥的位置

 ssh-add ~/.ssh/id_rsa