我想设置从 FreeBSD(不完全是 unix 系统,但在这种情况下它足够 unix)到 Windows 10 的无密码 SSH 连接。为此,我在 Windows 10 中添加了 OpenSSH 可选功能并运行了服务器。使用 SCP 命令确认可以访问它并且一切顺利,但它要求输入密码。如果是 unix 到 unix,我所要做的就是将公钥从源复制到目标。如果我在 unix 到 windows 的情况下执行相同操作,源(FreeBSD)会提供公钥,但没有更多信息,就会跳转到下一个身份验证方法。
密钥对是在 FreeBSD 上使用生成的ssh-keygen -t rsa
(也尝试过ssh-keygen -t ed25519
,结果相同),然后将 RSA 公钥复制到 Windows 10 用户(与 scp 命令中使用的用户相同).ssh/authorized_keys
,该用户位于用户的主目录中。
使用 Putty Key Generator,我使用在源 (FreeBSD) 处生成的私钥生成了一个公钥。在 Windows 用户中使用这种格式的公钥.ssh/authorized_keys
不会发生任何变化。
我进入 OpenSSH 的sshd_config_default
文件并添加了以下行:
允许空密码 是
PermitRootLogin 是
StrictModes 没有
RSA身份验证 是
公钥认证 是
授权密钥文件 .ssh/authorized_keys
IgnoreUserKnownHosts 是
至于这个配置文件的语法,我不知道它应该如何,但据我所知,我只是像上面一样放入了这些行。配置文件中有示例,但它们被注释掉了。#
尝试scp
使用新配置(配置更改后重新启动服务器)得到的结果与之前的尝试相同。
我如何将在 FreeBSD 生成的公钥提供给 Windows 10,这样当我将scp
文件从 FreeBSD 传输到 Windows 10 时,它不会要求输入密码?
答案1
我无法解决密钥认证不起作用的问题,但改变我获取文件的方式可以解决。我没有从 FreeBSD 发送文件,而是从 Windows 中拉取文件。为了使它正常工作,我在 Windows 上使用 OpenSSH 生成密钥,并将公钥复制到 FreeBSD 中,这样它就可以正常工作了。
(不要忘记chmod 644 authorized_keys
)