Openssh Connection不能与AuthorizedKeysCommand一起使用

Yas*_*ika 0 ssh openssh ssh-keys

我在sshd_config上添加了这些行

AuthorizedKeysCommand /authorizedkeys/authorized-keys
AuthorizedKeysCommandUser ssh-keys

-rwxr-x--- 1 root ssh-keys 712 Dec 23 22:36 /authorizedkeys/authorized-keys 
-rwxr-x---  1 root ssh-keys  712 Dec 23 22:36 authorized-keys
Run Code Online (Sandbox Code Playgroud)

ssh-keys用户可以执行该文件(/ authorizedkeys/authorized-keys).但我不能ssh到服务器; ssh git@myserver.com

在auth.log中我可以看到这一行,

error: Unsafe AuthorizedKeysCommand: bad ownership or modes for directory /
Run Code Online (Sandbox Code Playgroud)

如果我给/ authorizedkeys/authorized-keys文件授予770权限,我会收到以下错误,

error: Unsafe AuthorizedKeysCommand: bad ownership or modes for file /authorizedkeys/authorized-keys
Run Code Online (Sandbox Code Playgroud)

我尝试使用root作为AuthorizedKeysCommandUser并更改/ authorizedkeys/authorized-keys文件的权限和所有者.它也没用.

我在ubuntu 14.04上使用OpenSSH_6.6.1p1.

注意:我可以使用authorized_keys文件ssh

Ken*_*ter 5

Unsafe AuthorizedKeysCommand: bad ownership or modes for directory /
Run Code Online (Sandbox Code Playgroud)

它抱怨根目录的所有权或权限.根据源代码,文件,包含该文件的目录以及所有父目录(包括根目录)必须由root拥有.所有这些文件和目录的权限必须为0755(拒绝对组和其他的写访问).

我的猜测是你在根目录上设置了组写权限,或类似的东西.

授予"/ authorizedkeys/authorized-keys"0770权限也会导致该文件无法通过权限检查.

为完整起见,这是发出目录错误的代码部分:

if (stat(buf, &st) < 0 ||
    (!platform_sys_dir_uid(st.st_uid) && st.st_uid != uid) ||
    (st.st_mode & 022) != 0) {
        snprintf(err, errlen,
            "bad ownership or modes for directory %s", buf);
        return -1;
}
Run Code Online (Sandbox Code Playgroud)

它会在以下情况下发出错误:

  1. 对目录的stat()调用失败
  2. 该文件不属于root("uid"为0)
  3. 该文件的权限包括按组写入或按其他方式写入.