cygwin上的公钥认证问题

时间:2013-05-18 17:29:53

标签: ssh cygwin localhost public-key

我一直在cygwin上尝试“ssh localhost”(我使用的是WIndows 7),但它一直要求输入密码。

当我执行“ssh -vvv localhost”时,我发现公钥验证没有发生(或失败)。因此,它要求输入密码。

debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/xxxxxxxx/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password,keyboard-interactive

我不确定它是否无法读取authorized_keys文件,或者是否存在超时问题,或者验证失败了?有没有办法获得更多细节?

我已完成以下步骤:

  • SSH-主机配置。向所有人回答“是”。
  • 生成RSA密钥并将其添加到authorized_keys文件中。
  • net start sshd
  • ssh localhost

这些是权限:

-rw------- 1 xxxxxxxx mkgroup  402 May 18 16:34 authorized_keys
-rw------- 1 xxxxxxxx mkgroup 1675 May 18 16:33 id_rsa
-rw-r--r-- 1 xxxxxxxx mkgroup  402 May 18 16:33 id_rsa.pub
-rw-r--r-- 1 xxxxxxxx mkgroup  171 May 18 14:33 known_hosts

还有一些问题:   - 该组显示为mkgroup。   - 我想,本地主机中不存在用户“xxxxxxxx”。    它没有显示在“net user sshd”中。 “xxxxxxxx”是域帐户。    这会导致公钥验证问题吗?

只是为了查看输出是否有任何不同,我删除了authorized_keys文件并尝试了。输出没有差异。它仍然发送数据包并继续进行下一种身份验证模式。没有错误消息。有没有其他方法可以获得更多细节(我是Cygwin和SSH n00b)?我想在读取authorized_keys文件时发现它失败了。

6 个答案:

答案 0 :(得分:2)

快速仔细检查,您是否将您的公钥或私钥添加到authorized_keys?它需要是你的公钥。

我注意到服务器在收到你的pubkey_test后没有响应“服务器接受密钥...”而且我已经看到当你连接的服务器上的authorized_keys文件中缺少公钥时。你应该看到:

debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279

设置它的最简单方法是使用ssh-copy-id来完成工作,例如:

# ssh-copy-id localhost

这将创建具有正确权限的authorized_keys文件。运行此操作时,系统将提示您输入密码,因为服务器没有密钥。一旦此命令成功运行,您将能够使用您的身份文件简单地ssh到服务器。请注意,ssh_config将标识文件默认为〜/ .ssh / identity,〜/ .ssh / id_rsa,〜/ .ssh / id_dsa,因此如果要使用其他文件,则应在〜/ .ssh中设置别名/配置。

希望这有帮助。

答案 1 :(得分:0)

至少你需要

chmod 700 id_rsa

这是 my setup 如果它有帮助

-rwx------ 1 Steven None 1675 May 17 12:49 id_rsa
-rwx------ 1 Steven None  399 May 17 12:49 id_rsa.pub
-rwx------ 1 Steven None  803 May 18 01:13 known_hosts

答案 2 :(得分:0)

您的cygwin设置似乎存在一些问题,这就是用户/组未正确显示的原因。您需要运行mkgroup来生成/ etc / group,也可能运行mkpasswd。我有类似的问题 - 我必须运行mkpasswd来重新生成我的/ etc / passwd。运行mkpasswd后,我终于可以进入我的localhost。很遗憾调试信息没有记录足够的信息来轻松诊断问题。

此页面详细介绍了cygwin中的Windows安全性:http://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-setuid-overview

答案 3 :(得分:0)

我在设置公钥认证方面遇到了类似的问题(客户端具有类似的详细输出),虽然我试图从Ubuntu客户端到Cygwin SSHD服务器,但这是一个非常古老的Cygwin环境(版本) Windows 2000上的1.5.12!)。我使用ssh-copy-id复制了公钥。

在我的情况下,在Cygwin端使authorized_keys文件成为可读的(模式644)似乎允许公钥认证成功。

从我所见,模式600是标准的,所以也许这个"修复"在我的情况下,实际上是Cygwin SSHD设置中其他地方出现问题的迹象。但是,现在pub密钥身份验证终于正常工作,我可能不会深入挖掘。

答案 4 :(得分:0)

我的问题是我认为cygwin如果可以复制并粘贴其文件,则可以,因此,如果我想克隆安装,我只需将C:\cygiwn64文件夹复制并粘贴到其他位置并运行.bat文件。

但是我错了。每次使用Windows资源管理器复制文件时,cygwin中的权限和所有权都会损坏。因此,不要使用Windows资源管理器来更改任何cygwin文件,仅使用cpmkdirmv,{{1 }},vim等。

此外,如果您要创建新的安装,只需使用nano文件并为其选择一个新的setup_x86_64.exe目录,然后由安装程序安装软件包并为您完成其余的工作即可。

这样,您可以确保没有任何损坏,并且将来不会因一些惊人的错误消息而感到惊讶。

答案 5 :(得分:0)

重新安装

C:\

许多问题将得到解决。