我正在尝试从 Windows 7 计算机到本地服务器进行无密码 SSH 身份验证。
Windows 机器:我在这台机器上的登录名是
MY_LOGIN_NAME
。我使用 Cygwin 作为命令行。CentOS 5.5 服务器:我在该服务器上拥有管理员权限;以 身份登录
root
。
以下是我目前所做的工作:
登录
MY_LOGIN_NAME
Windows 计算机后,我ssh-config-user
从 Cygwin 命令行输入。这至少创建了 RSA 公钥和私钥C:/Users/MY_LOGIN_NAME/.ssh
.ssh
我使用将公钥复制到服务器上的目录中scp
。scp id-rsa.pub[电子邮件保护]:.ssh/id-rsa.pub
ssh
然后我尝试使用如下方式登录服务器:ssh -i id_rsa[电子邮件保护]
但它仍然要求我输入密码。我错过了什么?
答案1
问题出在你的第 2 步。你覆盖了[电子邮件保护]公钥与您的 Cygwin 公钥。这不是您想要的。
你应该将你的公钥添加到[电子邮件保护]授权密钥。这可以手动将 id-rsa.pub 附加到 /root/.ssh/autorized_keys(在 CentOS 上),或自动运行ssh-复制-id在 Cygwin 上。
ssh-copy-id [email protected]
它会提示您输入密码,然后您就没问题了。
此外,你应该恢复[电子邮件保护]公钥,或者如果不方便的话,生成一对新的。
答案2
另外,请注意允许Root登录服务器端 /etc/ssh/sshd_config 文件中可用的选项,其中描述,
PermitRootLogin
Specifies whether root can log in using ssh(1). The argument must be "yes",
"without-password", "forced-commands-only", or "no". The default is "yes".
If this option is set to "without-password", password authentication is
disabled for root.
将其设置为“无密码”的效果是,只允许 root 通过拥有授权公钥的方式通过 ssh 登录,这样可以马洛里尝试暴力破解 root 密码。但是,通过授权公钥进行身份验证失败会表现为重复的密码提示,这可能会造成混淆。