2013-05-18 59 views
7

我一直在cygwin上使用“ssh localhost”(我使用WIndows 7),但它一直在询问密码。cygwin上的公钥认证问题

当我做了“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文件。
  • 净启动sshd
  • SSH本地主机

这些权限:

-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”在localhost中不存在。 它没有显示在“net user sshd”中。 “xxxxxxxx”是一个域帐户。 这可能导致公钥认证问题?

只看到输出是否有差异,我删除了authorized_keys文件并尝试。输出没有差异。它仍然发送一个数据包并进入下一个认证模式。没有错误消息。有没有其他的方式来获得更多的细节(我是Cygwin和SSH n00b)?我想在阅读authorized_keys文件时发现它失败。

+0

你有某种NAT吗?有时它可能会破坏连接。 – Hubbitus

回答

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 
+0

Hello Steven,谢谢你的回应。它不适合我。有什么方法可以获得比“ssh -vvv localhost”提供的更多细节吗?当我知道问题出在哪里时,我认为我可以继续进行下去。到目前为止,我一直无能为力。我怀疑我的小组可能会导致问题。你的说“没有”,但我的是“mkgroup”。 – Naveen

0

它似乎有一些问题,你的cygwin的设置,这就是为什么用户/组没有正确显示。你需要运行mkgroup来生成你的/ etc/group,也可能是mkpasswd。我有一个类似的问题 - 我不得不运行mkpasswd来重新生成我的/ etc/passwd。运行mkpasswd后,我终于可以SSH到我的本地主机。调试信息没有记录足够的信息来轻松诊断问题是一件令人遗憾的事情。

此页面介绍更多关于Windows安全Cygwin中:http://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-setuid-overview

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中设置一个别名/配置。

希望这会有所帮助。

0

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

在我的情况下,在Cygwin一侧制作authorized_keys文件世界可读(模式644)似乎允许公钥验证成功。

从我所看到的,模式600是标准的,所以也许这个“修复”在我的情况下实际上是在Cygwin SSHD设置其他地方的问题的迹象。但现在,酒吧密钥认证终于有效了,我可能不会再深究了。