抱歉再次发布共同话题。我读了几个类似的问题,但我仍然没有找到为什么它不起作用。那么让我描述一下我做了什么。我在与客户端/服务器不同的机器上生成了私钥/公钥 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
cnfig 包含:
Host *
StrictHostKeyChecking no
客户端的 ~/.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
- 这可能是我的尝试产生的
答案1
在 CentOS 6 中,有一个阻止 ssh RSA 身份验证工作的错误如果 selinux 处于强制模式,则根据需要进行设置。
您可以禁用 selinux,或者尝试以下解决方法:
restorecon -R -v ~$USER/.ssh
答案2
这两行来自ssh centos 操作指南为我解决了这个问题:
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
答案3
你能试试这个吗?将以下行添加到~/.ssh/config
:
Host remotehost
IdentityFile ~/.ssh/your_private_key