如何在 Linux 中设置正确的 SSH 目录权限
为了使 SSH 正常工作,它需要对~/.ssh或/home/username/.ssh目录具有正确的权限:所有用户特定的 ssh 配置和身份验证文件的默认位置。建议的权限是用户具有读/写/执行权限,并且组和其他人不得访问。
此外,ssh还要求目录内的文件对用户有读写权限,不能被其他人访问,否则用户可能会遇到以下错误:
Authentication refused: bad ownership or modes for directory
本指南介绍如何在 Linux 系统上设置.ssh目录及其存储的文件的正确权限。
在 Linux 中设置正确的 SSH 目录权限
如果您遇到上述错误,您可以使用chmod命令在.ssh目录上设置正确的 ssh 目录权限。
# chmod u+rwx,go-rwx ~/.ssh OR # chmod 0700 ~/.ssh
要检查~/.ssh目录的权限,请使用带有和标志的ls 命令,如下所示:-l
-d
# ls -ld .ssh/
以下是您将在~/.ssh目录中找到的一些文件:
- 私钥文件(例如id_rsa)——用于身份验证的私钥,其中包含高度敏感的信息,因此,所有者必须具有读写权限,并且不能被组和其他人访问,否则 ssh 将拒绝连接。
- 公钥(例如.pub 文件)——用于身份验证的公钥,它也包含敏感信息,因此它应该具有所有者的读写权限、组的只读权限以及其他人的权限。
- authorized_keys – 包含可用于以该用户身份登录的公钥列表。它不是高度敏感的,但所有者应具有读写权限,而组和其他人则不能访问。
- known_hosts – 存储 ssh 用户已登录的所有主机的主机密钥列表。所有者应具有读写权限,但群组和其他人不能访问。
- config — 每个用户的配置文件,所有者应具有读写权限,并且不应被组和其他人访问。
默认情况下, ~/.ssh目录下的文件是使用正确的权限集创建的。要检查其权限,请在主目录中运行以下命令:
# ls -l .ssh/
如果 ssh 抱怨上述任何文件的权限错误,您可以像这样为任何文件设置正确的权限:
# chmod u+rw,go-rwx .ssh/id_rsa # chmod u+rw,go-rwx .ssh/id_rsa.pub # chmod u+rw,go-rwx .ssh/authorized_keys # chmod u+rw,go-rwx .ssh/known_hosts # chmod u+rw,go-rwx .ssh/config OR # chmod 600 .ssh/id_rsa # chmod 600 .ssh/id_rsa.pub # chmod 600 .ssh/authorized_keys # chmod 600 .ssh/known_hosts # chmod 600 .ssh/config
此外,用户的主目录不应被组或其他人写入,如下面的屏幕截图所示。
# ls -ld ~
要删除组和其他人在主目录上的写权限,请运行以下命令:
# chmod go-w ~ OR # chmod 755 ~
您可能还想阅读以下与 SSH 相关的文章:
- 如何保护和强化 OpenSSH 服务器
- 5 个最佳 OpenSSH 服务器最佳安全实践
- 如何在 Linux 中设置 SSH 无密码登录 [3 个简单步骤]
- 如何使用 SSHGUARD 阻止 SSH 暴力攻击
- 如何使用端口敲击来保护 Linux 中的 SSH 服务
- 如何在 Linux 中更改 SSH 端口
现在就这些了!使用下面的评论部分来提问或发表您对这个话题的想法。