我一直在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文件,或者是否存在超时问题,或者验证失败了?有没有办法获得更多细节?
我已完成以下步骤:
这些是权限:
-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文件时发现它失败了。
答案 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文件,仅使用cp
,mkdir
,mv
,{{1 }},vim
等。
此外,如果您要创建新的安装,只需使用nano
文件并为其选择一个新的setup_x86_64.exe
目录,然后由安装程序安装软件包并为您完成其余的工作即可。
这样,您可以确保没有任何损坏,并且将来不会因一些惊人的错误消息而感到惊讶。
答案 5 :(得分:0)
重新安装
C:\
许多问题将得到解决。