抱歉再次发布常见主题。我读了几个类似的问题,但我仍然没有找到为什么它不起作用。所以让我描述一下我做了什么。我在与客户端/服务器不同的机器上生成了私有/公共 rsa 密钥文件。
然后我在客户端创建~/.ssh
目录并复制私钥id_rsa
,设置适当的所有者和文件权限。在服务器端,我在我想要连接的用户下再次创建,~/.ssh
将公钥放入授权密钥中。
当我尝试 ssh 客户端托管时,它仍然需要密码,即使该密钥是作为密码生成的。
我是否忽略了一些明显的东西?
我还尝试在服务器端查找 ssh 日志以了解为什么它需要 passwd 的详细信息 - 但 /var/log/auth 或 /var/log/ssh 不存在。它不是默认启用还是我需要更改 sshd 的配置并重新启动服务。
我正在使用 CentOS 6。
回答问题:~/.ssh 在服务器端:
rw-------. hdfs hadoop authorized_keys
rw-------. hdfs hadoop config
rw-------. hdfs hadoop id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
cnfig 包含:
Host *
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
~/.ssh 在客户端:
rw-------. hdfs hadoop authorized_keys
rw-------. hdfs hadoop config - the content is the same
rw-------. hdfs hadoop id_rsa
rw-r--r--. hdfs hadoop known_hosts
Run Code Online (Sandbox Code Playgroud)
在 CentOS 6 中,如果 selinux 处于强制模式,则有一个错误会阻止 ssh RSA 身份验证正常工作。
您可以禁用 selinux,也可以尝试以下解决方法:
restorecon -R -v ~$USER/.ssh
Run Code Online (Sandbox Code Playgroud)