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

Rém*_* B. 24 ssh authentication key-authentication home sshd

编辑

此处暴露的问题已解决(关于文件.ssh夹的文件模式。

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

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

git定义如下用户:

# cat /etc/passwd | grep git
git:x:1002:1002:,,,:/var/git:/bin/bash
Run Code Online (Sandbox Code Playgroud)

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

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

$ ssh git@srv
git@srv's password:
Run Code Online (Sandbox Code Playgroud)

我检查了日志:

# tail -n 1 /var/log/auth.log
[...] Authentication refused: bad ownership or modes for file /var/git/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

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

# ls -l /var/git/.ssh/ | grep auth
-rw-rw-r-- 1 git git 394 mai   22 17:39 authorized_keys
Run Code Online (Sandbox Code Playgroud)

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

# ls -al /var/git/ | grep ssh
drwxrwxr-x  2 git  git  4096 mai   22 17:39 .ssh
Run Code Online (Sandbox Code Playgroud)

$HOME目录:

# ls -l /var/ | grep git
drwxr-xr-x  7 git  git    4096 mai   27 10:49 git
Run Code Online (Sandbox Code Playgroud)

所以所有者总是git,就像所有者组一样。而且文件是可读的,所以诀窍在哪里?

dam*_*ois 38

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

# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

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

  • 有用的是在目标机器上以调试模式启动 `sshd`(根据我的记忆,所以可能不是 100% 准确)`/usr/sbin/sshd -d -e -p 1234 ` 这样你就有一个 sshd 服务器在监听端口 1234,所有信息都在控制台中输出。 (3认同)
  • 仅当归 root 所有时 (2认同)
  • 使用 ssh -vv 连接。这_可能_为您提供一个提示,为什么公钥/私钥身份验证失败。 (2认同)

Oth*_*eus 5

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

PS你ls -l /var | grep git更简洁地完成为ls -ld /var/git


小智 5

目录$HOME/.ssh模式必须为 700 并且authorized_keys 只能由所有者读取,即模式 600:

chmod u=rwx,g=,o= /var/git/.ssh
chmod u=rw,g=,o= /var/git/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

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

chmod u=rw,g=,o= /var/git/.ssh/id_?sa
Run Code Online (Sandbox Code Playgroud)

  • 实际上700和600是最安全的方法。但是 660 可能会起作用:如果该用户的组中没有其他用户!我经历了惨痛的教训,在我向组中添加另一个用户后,工作登录被拒绝,哈哈。 (3认同)
  • @lol我也看到了_确切_这一点,这让我感到困惑......我向用户组添加了一个新用户,突然基于“authorized_keys”的身份验证停止工作。如果有人可以在文档中找到有关此行为的信息,那就太好了。 (2认同)

归档时间:

查看次数:

48897 次

最近记录:

5 年,6 月 前