身份验证被拒绝:文件 /var/git/.ssh/authorized_keys 的所有权或模式错误

身份验证被拒绝:文件 /var/git/.ssh/authorized_keys 的所有权或模式错误

编辑

这里暴露的问题已经解决(关于文件.ssh夹的文件模式)。

但另一个问题仍然存在,所以我创建了一个新问题:>无法使用 SSH-RSA 密钥登录

我无法再使用特定用户的 ssh-rsa 密钥进行连接,但它仍然适用于其他用户。

用户git定义如下:

# cat /etc/passwd | grep git
git:x:1002:1002:,,,:/var/git:/bin/bash

所以你注意到这是 git 用户,因此它的家是/var/git,而不是/home

现在,ssh 总是提示我输入密码:

$ ssh git@srv
git@srv's password:

我检查了日志:

# tail -n 1 /var/log/auth.log
[...] Authentication refused: bad ownership or modes for file /var/git/.ssh/authorized_keys

由于authorized_keys某些所有权或模式配置错误。我不明白,因为这是该文件的conf:

# ls -l /var/git/.ssh/ | grep auth
-rw-rw-r-- 1 git git 394 mai   22 17:39 authorized_keys

这是(以防万一......)父.ssh目录:

# ls -al /var/git/ | grep ssh
drwxrwxr-x  2 git  git  4096 mai   22 17:39 .ssh

$HOME目录:

# ls -l /var/ | grep git
drwxr-xr-x  7 git  git    4096 mai   27 10:49 git

所以业主总是git像业主团体一样。文件是可读的,那么诀窍在哪里呢?

答案1

问题是文件和目录权限不满足 的要求StrictModes,这在 OpenSSH 中是yes默认的,不应更改。尝试将authorized_keysto的权限0600.ssh目录设置为0700

# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys

请注意,...根据安装的不同, 会有所不同(例如,在这个问题中,它是,/var/git/但对于用户来说,它将是/home/username/.

答案2

出于偏执的原因,该.ssh目录authorized_keys一定不能是组可写的。我想想法是,用户必须是唯一能够明确控制他/她的授权的人。我相信 ACL 可以解决这个问题。另一种解决方法是StrictModes=no在 sshd 的配置文件中进行设置。但为了一个用户而这样做就太危险了。

PS你的ls -l /var | grep git做法更简洁ls -ld /var/git

答案3

目录$HOME/.ssh模式必须是 700 并且authorized_keys 应该仅所有者可读,即模式 600:

chmod u=rwx,g=,o= /var/git/.ssh
chmod u=rw,g=,o= /var/git/.ssh/authorized_keys

至于私钥,必须只能由所有者读写:

chmod u=rw,g=,o= /var/git/.ssh/id_?sa

相关内容