可以在 OpenSSH 中配置 keytab 文件位置吗?

可以在 OpenSSH 中配置 keytab 文件位置吗?

我们在 Debian jessie 下运行 OpenSSH 服务器。我们使用 Kerberos 作为身份验证方法之一。将 Kerberos 密钥表文件放在 OpenSSH 服务器上的标准位置是/etc/krb5.keytab.是否有任何 OpenSSH 配置选项允许我们将 keytab 文件放在其他位置,或者该位置是否硬编码在 OpenSSH 服务器可执行文件中?

答案1

(可移植的)OpenSSH 代码库缺少对“keytab”的引用,因此快速转到 kerberos 配置,krb5.conf我们发现:

LIBDEFAULTS SECTION
       The following relations are defined in the [libdefaults] section:

       default_keytab_name
              This  relation  specifies  the default keytab name to be used by
              application severs such as telnetd and rlogind.  The default  is
              "/etc/krb5.keytab".  This formerly defaulted to "/etc/v5srvtab",
              but was changed to the current value.

对于您的需求来说,这可能是也可能不是太全局的值,具体取决于。

答案2

有一个 kerberos 环境变量指向 kerberos keytab 文件 KRB5_KTNAME 的位置。当然,您可以在全局范围内进行设置,但随后所有应用程序都会查看该一个密钥表文件。

但我终于找到了一个很好的方法,当应用程序配置没有明确允许它时,可以根据应用程序特定的基础来设置它。我将 kerberos keytab 环境变量 KRB5_KTNAME 添加到 /etc/default/ssh (默认情况下,下面的文件的其余部分已经存在):

/etc/default/ssh
# Default settings for openssh-server. This file is sourced by /bin/sh from
# /etc/init.d/ssh.
 
# Options to pass to sshd
SSHD_OPTS=

KRB5_KTNAME=/etc/krb/host.keytab

上面的文件指定了 init.d,但许多 systemd 服务文件也引用了同一文件。在我安装的 Ubuntu 16.04 上,以下是默认 sshd.service 文件的相关部分:

/lib/systemd/system/sshd.service
[...]
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
[...]

当然,如果您的服务文件不包含“EnvironmentFile”行,您可以按照上面的方式添加它,或者您可以编辑服务文件以指向定义了 KRB5_KTNAME 环境变量的任何文件。

相关内容