之所以要把这个记录下来
是因为它的确和root用户不一样
root用户 不需要改动什么权限问题 只要生成私钥/公钥对 即可
但是一样的操作在普通用户上就出了问题了
折腾了老半天
ssh-keygen -t rsa
一路回车 就好
然后会生成几个文件
id_rsa
id_rsa.pub
known_hosts
然后执行
cat id_rsa.pub >> authorized_keys
如果是root用户 做完这一步 就可以了 就可以使用ssh slave01 或 ip 登录了
但是 郁闷的是 同样的操作 到了普通用户上就不行了
网上找了很多办法 什么修改sshd_config之类的 试过都没用
其实最终还是权限问题 什么都配置文件都不用改 只需要赋一下权限就ok
默认生成的文件authorized_keys权限:
-rw-rw-r-- 1 hadoop hadoop 395 05-16 17:59 authorized_keys
默认生成的.ssh权限是可以
下面一个个的赋权限
首先是给.ssh目录赋一个权限
1 chmod 700 /usr/hadoop/.ssh
2 chmod 600 authorized_keys
3 chmod 600 id_rsa
这下就可以ssh slave01了
还是不行的话 就仔细检查一下权限
-rw------- 1 hadoop hadoop 396 05-16 05:10 authorized_keys
-rw------- 1 hadoop hadoop 1675 05-16 05:10 id_rsa
-rwxrwxrwx 1 hadoop hadoop 396 05-16 05:10 id_rsa.pub
-rwxrwxrwx 1 hadoop hadoop 402 05-16 05:10 known_hosts
.ssh目录权限:
drwx------ 2 hadoop hadoop 4096 05-16 05:10 .ssh
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您遇到的问题是由于SSH访问权限配置不当导致的,尤其是在非root用户环境下。SSH协议在执行密钥对认证时,对于相关文件的权限有严格要求,以确保安全性。您的解决步骤已经很到位了,这里我再详细解释一下每个步骤的意义和为什么这样做能解决问题。
给.ssh
目录赋权限:
chmod 700 /usr/hadoop/.ssh
这一步将.ssh
目录的权限设置为drwx------
(700),意味着只有所有者(在这个例子中是hadoop
用户)可以读、写和执行该目录。这是必要的,因为SSH私钥是非常敏感的信息,必须限制其他用户的访问。
修改authorized_keys
文件权限:
chmod 600 authorized_keys
将authorized_keys
文件的权限设置为-rw-------
(600),这意味着只有文件的所有者可以读取和写入它。这个文件包含了允许登录的公钥列表,限制权限可以防止其他用户添加或修改这些公钥。
修改id_rsa
文件权限:
chmod 600 id_rsa
类似地,将私钥id_rsa
的权限也设置为-rw-------
(600)。私钥的安全至关重要,仅限所有者访问可以防止泄露。
关于其他文件的权限:
id_rsa.pub
(公钥)通常不需要严格的权限控制,但出于习惯和清晰管理,将其设为-rw-r--r--
(644)也是合理的。known_hosts
文件记录了已知主机的公钥指纹,一般保持默认或-rw-r--r--
(644)权限即可,以便用户能够读取并更新它。总结: SSH服务为了安全考虑,会检查相关文件和目录的权限。如果权限过于开放(比如其他人可读或可写),SSH可能会拒绝使用这些密钥进行认证,从而保护系统免受潜在的安全威胁。您通过调整权限解决了问题,遵循了SSH协议的安全实践。在处理与安全相关的配置时,始终关注最小权限原则,确保系统的安全性。