我的GIT设置在Linux下运行良好,但是当我尝试在Windows下设置(使用Git for Windows和TortoiseGit)时,我不知道在哪里放置我的私有ssh密钥(或者更好的是,如何告诉ssh在哪里它位于)。 我在安装Git for Windows时使用了标准的ssh.exe选项。 如果我允许在服务器上进行密码validation(代替rsa),则安装运行正常。
如果你正在运行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时,需要通过步调的方向来设置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的密钥位置:
TortoiseGit
> Settings
Git
> Remote
屏幕拍摄如下:
上面的答案都没有为我工作。 这到底是为了什么。 这实际上很简单,如果你知道要input什么。 它不需要腻子。
这是你自己的计算机上完成的一点。 现在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访问他们的服务器,但你可以上传密钥使用他们的网站,所以为'现在复制到您的服务器',做:
如果你在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中:
您的私钥需要添加到工作站上的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上)会改变encoding
到UCS-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顺序如下。
%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%USERPROFILE%/.ssh/
因此,为什么有这么多人build议设置HOME
如果其中一个不是你所期望的。 更重要的是你可以自己检查一下,使用ssh -v
debugging一个使用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%/.ssh
为C:/Users/Username/.ssh
且存在networking/文件服务器问题时也会导致不必要的故障关键在本地。 将%HOME%
设置为%USERPROFILE%
停止查看远程主驱动器。
TortoiseGit允许您指定克隆存储库时使用的密钥。 只需选中“Load Putty Key”并浏览到.ppk
文件,如屏幕截图所示:
我已经通过创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,因为它可以让你在会话开始时只写一次密码,而不是每次都按下。 这里的所有答案都太短了,所以我会在这里发表一个详细的指导:
pageant.exe
, puttygen.exe
, putty.exe
和plink.exe
,把它们放在C:\puttyTools
目录下。 puttygen.exe
。 %USERPROFILE%\_ssh
(在我的电脑中这映射到C:\Users\andres\.ssh\
)。 不要紧,你说的关键,但为了演示的目的,我打算把它叫做github.ppk。 这个文件应该有.ppk的扩展名。 Public key for pasting into OpenSSH authorized_keys file
文本Public key for pasting into OpenSSH authorized_keys file
并粘贴到Github的新设置中。 给它一个标题,描述什么机器的关键(例如“工作笔记本电脑”)。 pageant.exe
,会出现一个新的系统托盘图标。 Environ
,它将findEdit environment variables for your account
): GIT_SSH = "C:\puttyTools\plink.exe"
和SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
git控制台的新实例,通过编写命令env | grep -i ssh
validation环境variables是否在那里 env | grep -i 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