【问题标题】:Public key authentication issues on cygwincygwin 上的公钥认证问题
【发布时间】:2013-05-18 17:29:52
【问题描述】:

我一直在 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 本地主机

这些是权限:

-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文件时发现它失败了。

【问题讨论】:

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

标签: ssh cygwin localhost public-key


【解决方案1】:

快速复查一下,您是否将您的公钥或私钥添加到了 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中设置一个别名/配置。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我的问题是我认为 cygwin 如果它的文件被复制和粘贴就可以了,所以如果我想克隆安装我只是复制并粘贴 C:\cygiwn64 文件夹到其他地方并运行 .bat 文件。

    但我错了。每次使用 Windows 资源管理器复制文件时,cygwin 中的权限和所有权都会损坏。所以不要使用 Windows 资源管理器来更改任何 cygwin 文件,只能使用命令行应用程序,如 cpmkdirmvvimnano 等.

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

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

    【讨论】:

      【解决方案3】:

      至少你需要

      chmod 700 id_rsa
      

      这是 my setup 如果有帮助

      -rwx------ 1 Steven None 1675 年 5 月 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

      【讨论】:

      • 您好,史蒂文,感谢您的回复。它对我不起作用。有没有比“ssh -vvv localhost”提供的更多细节的方法?我认为当我知道问题所在时,我将能够进一步进行。我现在一无所知。我怀疑我的小组可能会导致问题。你的说“none”,但我的是“mkgroup”。
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        我在设置公钥身份验证时遇到了类似的问题(来自客户端的类似详细输出),尽管我试图从 Ubuntu 客户端到 Cygwin SSHD 服务器进行设置,并且它是一个非常旧的 Cygwin 环境(版本1.5.12 在 Windows 2000 上!)。我使用 ssh-copy-id 复制了公钥。

        在我的例子中,在 Cygwin 端使授权密钥文件世界可读(模式 644)似乎允许公钥认证成功。

        据我所见,模式 600 是标准模式,所以在我的情况下,这个“修复”实际上可能是 Cygwin SSHD 设置中其他地方出现问题的迹象。但是现在 pub key 身份验证终于起作用了,我可能不会再深入挖掘了。

        【讨论】:

          【解决方案6】:

          重新安装

          C:\

          很多问题都会解决的。

          【讨论】:

            猜你喜欢
            • 2016-09-26
            • 2021-01-06
            • 2013-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-04-07
            • 2011-07-27
            相关资源
            最近更新 更多