考虑这种情况:pipe理员configuration了一个公钥/私钥对,以便在服务器之间rsync文件时使用,以避免密码提示。 这个设置很好。
然后当试图使用SSH / SCP时,系统会提示input密码。
问题:为什么这种情况下,如果rsync工作正常?
你如何configuration服务器来允许你的密钥? 把公钥放在服务器上的.ssh / authorized_keys中? 如果是这样,它应该工作。 当你使用rsync的时候使用ssh / scp的时候是否使用了相同的用户名(远程和本地)?
哦,顺便说一句,这个问题应该在serverfault.com问,而不是我想。
另一件我觉得有用的是在另一个端口上以debugging模式运行服务器。 有时服务器端会抱怨,客户端并没有给你一个很好的线索。
服务器端: /usr/sbin/sshd -Dedd -p 2222
客户端: ssh -vv -p 2222 server
非常感谢,我能够使用configuration项目解决问题
〜/ .ssh / config PasswordAuthentication no
并为.ssh目录和600个authorized_keys设置权限700。
这篇文章是非常有帮助的。
非常感谢。
请参阅身份validation的ssh手册页的部分。 一些可能性:
当您创build密钥时,您确保以与创build密钥相同的用户身份login。 还要确保何时将密钥正确导入到授权密钥中。
在服务器上,检查相关的日志文件,看是否有消息。 服务器拒绝正确设置密钥的最常见原因是权限错误(您的主目录, ~/.ssh/和~/.ssh/authorized_keys必须具有足够的安全权限,否则服务器将不会信任~/.ssh/authorized_keys因为它们可能已被其他用户更改)。 如果基于密钥的身份validation因为这个原因而被拒绝,它将被logging下来(如同许多其他原因一样)。 这通常在/var/log/auth.log (至less在Debian和类似系统上默认的SSHDconfiguration,logging到的位置可能会有所不同)。
为了获得更多信息,另一个尝试是增加SSH客户端的详细程度。 如果从命令行使用OpenSSH,请在连接时添加-v以获取更多详细输出,并再次添加-v (或仅将-vv作为选项进行分组),以使其更加健谈。
检查服务器上的auth日志(可能是/ var / log / secure或/var/log/auth.log中的一个) – 它们通常比客户端更加冗长(即使将-vvv添加到ssh命令)。
远远的,我见过的最常见的事情是,因为启用了StrictModes ,导致SSH引用的文件的权限 。
我build议将此添加到〜/ .ssh / config以防止被要求input密码。 它不会神奇地使钥匙工作,但它会使一个失败的脚本更快,更清晰。
PasswordAuthentication no
你确定它不是要求密码解密的密钥,而不是用户名和密码login到服务器?
我们已经在“强制rsync转换为非交互模式”中讨论过这个问题。 您可以阅读有关可能的解决scheme,但总之:
rsync -e 'ssh -o "NumberOfPasswordPrompts 0"' source user@target:/path
(谢谢,guss!)这不需要更改configuration,这可能会改变服务器上rsync或ssh的一些其他用途。
乌迪