p.campbell Asked: 2009-07-14 11:33:55 +0800 CST2009-07-14 11:33:55 +0800 CST 2009-07-14 11:33:55 +0800 CST 没有密码的 SSH/SCP 不起作用? 772 考虑这种情况:管理员配置了一个公钥/私钥对,以便在服务器之间 rsync'ing 文件以避免密码提示时使用。此设置效果很好。 然后在尝试使用 SSH/SCP 时,系统会提示输入密码。 问题:如果 rsync 工作正常,为什么会出现这种情况? ssh rsync scp 9 个回答 Voted Best Answer Torandi 2009-07-14T11:40:48+08:002009-07-14T11:40:48+08:00 您如何配置服务器以允许您的密钥?通过将您的公钥放在服务器上的 .ssh/authorized_keys 中?如果是这种情况,它应该可以工作。您在使用 ssh/scp 时是否使用与使用 rsync 时相同的用户名(远程和本地)? 哦,顺便说一句,我认为这个问题应该在 serverfault.com 上提出。 Anthony DeStefano 2009-07-14T14:58:08+08:002009-07-14T14:58:08+08:00 我发现有用的另一件事是在不同的端口上以调试模式运行服务器。有时服务器端会抱怨,而客户端并没有真正给你一个很好的线索为什么。 服务器端:/usr/sbin/sshd -Dedd -p 2222 客户端:ssh -vv -p 2222 server Amar Kumbhar 2012-06-26T03:18:51+08:002012-06-26T03:18:51+08:00 非常感谢,我可以使用配置项解决问题 ~/.ssh/config PasswordAuthentication no 并为 .ssh 目录和 600 个授权密钥设置权限 700。 这篇文章很有帮助。 多谢。 阿马尔。 Dana the Sane 2009-07-14T11:41:13+08:002009-07-14T11:41:13+08:00 请参阅 ssh 手册页中有关身份验证的部分。一些可能性: 您的客户端可能默认使用密码身份验证 您的身份文件不使用默认名称(即 id_rsa 参见 -i 选项) 您遇到了身份验证部分中提到的配置问题之一 Matt 2009-07-14T12:18:38+08:002009-07-14T12:18:38+08:00 检查服务器上的身份验证日志(可能是 /var/log/secure 或 /var/log/auth.log 之一)——它们通常比客户端更详细一些(即使您将 -vvv 添加到 ssh命令)。 遥遥无期,我见过的最常见的事情是由于启用了StrictModes而对 SSH 引用的文件的权限.. 我建议将其添加到~/.ssh/config以防止被要求输入密码。它不会神奇地使键起作用,但它会使失败的脚本更快更清晰。 PasswordAuthentication no Shawn B 2009-07-14T12:20:48+08:002009-07-14T12:20:48+08:00 当您创建密钥时,您是否确保以与您制作密钥相同的用户身份登录。还要确保将密钥正确导入到授权密钥。 David Spillett 2009-07-14T14:07:57+08:002009-07-14T14:07:57+08:00 在服务器上,检查相关日志文件以查看那里是否有任何消息。服务器拒绝使用正确设置密钥的最常见原因是权限错误(您的主目录,~/.ssh/并且~/.ssh/authorized_keys必须具有足够安全的权限,否则服务器将不信任其中的内容,~/.ssh/authorized_keys因为它们可能已被其他用户更改)。如果基于此原因拒绝基于密钥的身份验证,它将被记录(与许多其他原因一样)。这通常在/var/log/auth.log(至少在 Debian 和具有默认 SSHD 配置的类似系统上,登录到的位置可能会有所不同)。 为了获得更多信息,要尝试的另一件事是增加 SSH 客户端的详细程度。如果您从命令行使用 OpenSSH,请-v在连接时添加更详细的输出,然后-v再次(或者就像-vv选项可以这样分组)要求它更加健谈。 Olly 2009-07-15T01:06:12+08:002009-07-15T01:06:12+08:00 您确定它不是要求密码来解密密钥,而不是要求用户名和密码来登录服务器吗? Adam Matan 2009-07-15T01:17:02+08:002009-07-15T01:17:02+08:00 我们在“强制 rsync 到非交互模式”中讨论了这一点。您可以在那里阅读许多可能的解决方案,但简而言之: rsync -e 'ssh -o "NumberOfPasswordPrompts 0"' source user@target:/path (谢谢,guss!)这不需要任何可能改变服务器上 rsync 或 ssh 的其他用途的配置更改。 乌迪
您如何配置服务器以允许您的密钥?通过将您的公钥放在服务器上的 .ssh/authorized_keys 中?如果是这种情况,它应该可以工作。您在使用 ssh/scp 时是否使用与使用 rsync 时相同的用户名(远程和本地)?
哦,顺便说一句,我认为这个问题应该在 serverfault.com 上提出。
我发现有用的另一件事是在不同的端口上以调试模式运行服务器。有时服务器端会抱怨,而客户端并没有真正给你一个很好的线索为什么。
服务器端:
/usr/sbin/sshd -Dedd -p 2222
客户端:
ssh -vv -p 2222 server
非常感谢,我可以使用配置项解决问题
~/.ssh/config PasswordAuthentication no
并为 .ssh 目录和 600 个授权密钥设置权限 700。
这篇文章很有帮助。
多谢。
请参阅 ssh 手册页中有关身份验证的部分。一些可能性:
检查服务器上的身份验证日志(可能是 /var/log/secure 或 /var/log/auth.log 之一)——它们通常比客户端更详细一些(即使您将 -vvv 添加到 ssh命令)。
遥遥无期,我见过的最常见的事情是由于启用了StrictModes而对 SSH 引用的文件的权限..
我建议将其添加到~/.ssh/config以防止被要求输入密码。它不会神奇地使键起作用,但它会使失败的脚本更快更清晰。
当您创建密钥时,您是否确保以与您制作密钥相同的用户身份登录。还要确保将密钥正确导入到授权密钥。
在服务器上,检查相关日志文件以查看那里是否有任何消息。服务器拒绝使用正确设置密钥的最常见原因是权限错误(您的主目录,
~/.ssh/
并且~/.ssh/authorized_keys
必须具有足够安全的权限,否则服务器将不信任其中的内容,~/.ssh/authorized_keys
因为它们可能已被其他用户更改)。如果基于此原因拒绝基于密钥的身份验证,它将被记录(与许多其他原因一样)。这通常在/var/log/auth.log
(至少在 Debian 和具有默认 SSHD 配置的类似系统上,登录到的位置可能会有所不同)。为了获得更多信息,要尝试的另一件事是增加 SSH 客户端的详细程度。如果您从命令行使用 OpenSSH,请
-v
在连接时添加更详细的输出,然后-v
再次(或者就像-vv
选项可以这样分组)要求它更加健谈。您确定它不是要求密码来解密密钥,而不是要求用户名和密码来登录服务器吗?
我们在“强制 rsync 到非交互模式”中讨论了这一点。您可以在那里阅读许多可能的解决方案,但简而言之:
(谢谢,guss!)这不需要任何可能改变服务器上 rsync 或 ssh 的其他用途的配置更改。
乌迪