Openssh Connection不能与AuthorizedKeysCommand一起使用

时间:2014-12-24 07:42:42

标签: ssh ssh-keys openssh

我在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

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

在auth.log中的

我可以看到这一行,

error: Unsafe AuthorizedKeysCommand: bad ownership or modes for directory /

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

error: Unsafe AuthorizedKeysCommand: bad ownership or modes for file /authorizedkeys/authorized-keys

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

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

注意:我可以使用authorized_keys文件

进行ssh

3 个答案:

答案 0 :(得分:5)

Unsafe AuthorizedKeysCommand: bad ownership or modes for directory /

它抱怨根目录的所有权或权限。根据源代码,文件,包含该文件的目录以及所有父目录(包括根目录)必须由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;
}

如果出现以下情况,则会发出错误:

  1. 目录
  2. 的stat()调用失败
  3. 该文件不属于root用户(&#34; uid&#34;此处为0)
  4. 文件的权限包括按组写或按别名写。

答案 1 :(得分:0)

authorized_keys文件应为chmod 600,而.ssh目录应为chmod 700

答案 2 :(得分:-4)

您需要为远程主机上的密钥提供适当的权限:

[remote-host]$ chmod 755 ~/.ssh

[remote-host]$ chmod 644 ~/.ssh/authorized_keys