우리는 Debian jessie에서 OpenSSH 서버를 실행합니다. 우리는 인증 방법 중 하나로 Kerberos를 사용합니다. OpenSSH 서버에 Kerberos keytab 파일을 배치하는 표준 위치는 입니다 /etc/krb5.keytab
. keytab 파일을 다른 위치에 배치할 수 있는 OpenSSH 구성 옵션이 있습니까, 아니면 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 keytab 파일 KRB5_KTNAME의 위치를 가리키는 kerberos 환경 변수가 있습니다. 물론 전역적으로 설정할 수 있지만 그러면 모든 응용 프로그램이 해당 키탭 파일 하나를 보게 됩니다.
그러나 마침내 애플리케이션 구성에서 명시적으로 허용하지 않는 경우 애플리케이션별로 이를 설정하는 좋은 방법을 찾았습니다. 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 환경 변수가 정의된 모든 파일을 가리키도록 서비스 파일을 편집할 수 있습니다.