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_keys
to0600
和.ssh
目录的权限设置为0700
。
# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
请注意,...
将根据安装而有所不同(例如,在这个问题中它是,/var/git/
但对于用户来说它将是/home/username/
.
由于偏执的原因,.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)
归档时间: |
|
查看次数: |
48897 次 |
最近记录: |