开发者社区 问答 正文

linux 非root用户 普通用户ssh 登录


之所以要把这个记录下来
是因为它的确和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

展开
收起
寒喵 2018-12-29 19:27:13 3507 分享 版权
阿里云 AI 助理回答

您遇到的问题是由于SSH访问权限配置不当导致的,尤其是在非root用户环境下。SSH协议在执行密钥对认证时,对于相关文件的权限有严格要求,以确保安全性。您的解决步骤已经很到位了,这里我再详细解释一下每个步骤的意义和为什么这样做能解决问题。

  1. .ssh目录赋权限:

    chmod 700 /usr/hadoop/.ssh
    

    这一步将.ssh目录的权限设置为drwx------(700),意味着只有所有者(在这个例子中是hadoop用户)可以读、写和执行该目录。这是必要的,因为SSH私钥是非常敏感的信息,必须限制其他用户的访问。

  2. 修改authorized_keys文件权限:

    chmod 600 authorized_keys
    

    authorized_keys文件的权限设置为-rw-------(600),这意味着只有文件的所有者可以读取和写入它。这个文件包含了允许登录的公钥列表,限制权限可以防止其他用户添加或修改这些公钥。

  3. 修改id_rsa文件权限:

    chmod 600 id_rsa
    

    类似地,将私钥id_rsa的权限也设置为-rw-------(600)。私钥的安全至关重要,仅限所有者访问可以防止泄露。

  4. 关于其他文件的权限:

    • id_rsa.pub(公钥)通常不需要严格的权限控制,但出于习惯和清晰管理,将其设为-rw-r--r--(644)也是合理的。
    • known_hosts文件记录了已知主机的公钥指纹,一般保持默认或-rw-r--r--(644)权限即可,以便用户能够读取并更新它。

总结: SSH服务为了安全考虑,会检查相关文件和目录的权限。如果权限过于开放(比如其他人可读或可写),SSH可能会拒绝使用这些密钥进行认证,从而保护系统免受潜在的安全威胁。您通过调整权限解决了问题,遵循了SSH协议的安全实践。在处理与安全相关的配置时,始终关注最小权限原则,确保系统的安全性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答