要使SSH能够正常工作,它需要对~/.ssh或/home/username/.ssh目录具有正确的权限,即所有用户特定的SSH配置和身份验证文件的默认位置。推荐的权限是用户的读/写/执行,并且不能被组和其他用户访问。
此外,SSH还要求目录中的文件必须对用户具有读/写权限,并且不能被其他用户访问。否则的话,用户可能会遇到以下错误:
Authentication refused: bad ownership or modes for directory
接下来,小编简单介绍如何在Linux系统中对.ssh目录和存储在其中的文件设置正确的权限,以便其正常的运行工作。
其实,如果遇到上述错误,可以使用chmod命令在.ssh目录上设置正确的ssh目录权限。
# chmod u+rwx,go-rwx ~/.ssh 或者 # chmod 0700 ~/.ssh
要检查~/.ssh目录的权限,请使用带有-l和-d标志的ls命令,具体如下:
# ls -ld .ssh/
以下是你将在~/.ssh目录中找到的一些文件:
- private key file (相当于id_rsa ) – 用于认证的私钥,包含高度敏感的信息,因此必须对所有者有读写权限,不能被组和其他人访问,否则ssh会拒绝连接。
- public key(如.pub 文件)——用于身份验证的公钥,其中还包含敏感信息,因此它应该具有所有者的读写权限、组的只读权限等。
- authorized_keys – 包含可用于以该用户身份登录的公钥列表。它不是高度敏感的,但应该具有所有者的读写权限,并且不能被组和其他人访问。
- known_hosts – 存储ssh用户已登录的所有主机的主机密钥列表。它应该具有所有者的读写权限,并且不能被组和其他人访问。
- config – 每个用户的配置文件,应该具有所有者的读写权限,并且不应被组和其他人访问。
默认情况下,~/.ssh目录下的文件是使用正确的权限集创建的。要检查他们的权限,请在主目录中运行以下命令:
# ls -l .ssh/
如果ssh对上述任何文件的报出权限错误,这时候可以为任何文件设置正确的权限,如下所示:
此外,用户的主目录不应被组或其他用户写入,如下面的屏幕截图所示:
# ls -ld ~
要删除主目录上组和其他人的写权限,请运行以下命令:
# chmod go-w ~ 或者 # chmod 755 ~
总装,SSH为了使用安全,其对属主的目录和文件权限有所要求。如果权限不对,则SSH的免密码登陆不会生效。用户目录权限应该755或700,就是不能是77x、777,还需要保证other用户不能有w权限。
如果大家在Linux系统中使用SSH出现上述错误,可以按照上述对其目录进行正确的配置,这样该问题应该就可以得到解决。
推荐阅读: