在对other问题进行疑难解答时,我猜测由于某种原因未使用默认私钥。
在服务器上, C:\ Users \ Administrator.ssh \ config 包含:
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa.ppk
我正在使用plink在登录时管理ssh密钥。当我实际上在以管理员身份登录的计算机上时,运行git命令工作得很好。另一个例子:plink -T git@bitbucket.org
工作正常。
但是,当通过PuTTY登录服务器时,运行git命令失败,plink -T git@bitbucket.org
也是如此。但是,当我使用plink:plink -T -i C:\Users\Administrator\id_rsa.ppk git@bitbucket.org
指定私钥时,它可以正常工作。
%userprofile%在我登录PuTTY时是正确的,我的笔记本电脑的用户名和密码完全相同。是什么原因导致ssh无法获取并使用配置中指定的ppk文件?在本地登录和通过PuTTY登录时,我的GIT_SSH会话变量也设置为plink.exe。令人沮丧的是,在发出git命令时我无法指定ppk文件。
更新:如下面的评论回复中所述,主要问题似乎是没有使用pageant.exe将密钥发送到我正在尝试连接的服务器。当登录本地分页时启动就好了但不是通过PuTTY登录时。我也读过PuTTY中的“用户代理转发”,但这似乎没有帮助。也许freeSSHd不支持它?如果它确实会有所作为呢?
更新2:Yeeeeaaaahhh ......越来越近了。我在登录VNC查看器时输入了“选美”,并说'选美已经在运行'。所以我说了什么,并把它输入PuTTY控制台......什么都没发生。所以我认为它没有运行,现在是。于是我接着执行了plink -T -v git@bitbucket.org并且执行了lo-and-behold选美,但是说它安装了0个SSH密钥。所以这是核心问题。 pageant是一个基于用户会话的应用程序,它认为SSH用户管理员与本地管理员不同,因此它不提供任何密钥。我还关闭了PuTTY连接并注意到额外的选美进程仍在运行。坏消息#1。坏消息#2是我可以从PuTTY中开始的选美进程数量没有限制。怎么办?
最终:问题解决了;见最后编辑的答案。
答案 0 :(得分:1)
确保您确实定义了HOME环境变量,始终引用C:\Users\Administrator
(或%USERPROFILE%
),尤其是当您通过PuTTY登录时。
这将允许ssh找到你的ssh配置文件。
同时确保在生成ssh密钥时使用相同的ssh实现以及在使用git时使用ssh:请参阅“Git with SSH on Windows”。
如果您的私钥受密码保护,请参阅“Why git can't remember my passphrase under Windows”。
答案 1 :(得分:1)
这是我的“解决方案”:
1)从私钥文件中删除密码。选美不允许输入密码作为命令行参数,所以我不能在putty上使用它。很糟糕,但我还能做些什么?
2)在freeSSHd应用程序中,在命令外壳框中键入C:\WINDOWS\system32\cmd.exe /K "pageant C:\Users\Administrator\.ssh\id_rsa.ppk"
以使ssh用户执行选美,以便分页者在请求密钥时识别。这导致另一个pageant exe进程在后台运行,当你关闭ssh连接时它不会关闭但是我只能在一夜之间完成。如果我能以某种方式获得它产生的进程的PID,然后以某种方式运行一个关闭它的脚本,那就太好了。
3)它现在有效。
附录:freeSSHd服务不能在本地用户帐户下运行,它必须是SYSTEM帐户;否则它只是立即关闭成功的连接。为什么?不知道。我认为这是最大的障碍......也许ssh用户基本上是在系统帐户下运行,因此无法访问在“管理员”下运行的已经运行的选美流程。
更好的答案更新:我摆脱了freeSSHd并用openssh安装了Cygwin。对所有sshd配置选项选择“是”,不要在线收听对某些选项说“不”的其他教程。不要在SYSTEM帐户下运行sshd。让它创建一个新的用户帐户并使用该帐户。最大的好处是,现在当我通过PuTTY运行'pageant'时,我做了多少次并不重要,因为它不会产生超过两个进程!一个用于已经运行的实际本地管理员帐户,另一个用于古怪的“SSH管理员”帐户(简称为管理员)。即使从不同的计算机登录,它也不会产生任何更多的进程。问题解决了。
答案 2 :(得分:0)
如果在所需的任何位置找不到密钥,您还可以添加参数-v
,-i
,如:
plink -v -ssh -2 -i /whatever/location/id_rsa -l git gitserver.acme.com
首先,-v(详细)将有助于查明问题。然后你可以继续使用-i
参数来确保它找到密钥并且它是有效的。
然后你开始使用%userprofile%
。
我还认为你的目录应该是c:\ Users \ Administrator.ssh - 你可能在忘记添加反斜杠的时候输错了。