编辑
这里暴露的问题已经解决(关于文件
.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_keys
to的权限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