Kerberos 티켓 인증을 사용하여 SSH를 통해 대학 네트워크에 성공적으로 연결했습니다. 일반적인 세부 작업(kinit 티켓, ssh user@hostname)이 정상적으로 작동합니다.
질문
그러나 파일에 ssh 별칭을 설정하면 ~/.ssh/config
ssh는 Kerberos를 완전히 무시하고 비밀번호를 묻는 메시지를 표시합니다. (아래 디버그 출력을 참조하세요.)
왜 이런거야? Kerberos를 사용하도록 어떻게 구성합니까?
참고: Kerberos를 사용하는 일반 SSH 작업은 SSH 별칭을 사용하기 전과 후에도 계속 작동합니다. 또한 로그인 비밀번호가 제공되면 SSH 별칭이 예상대로 작동합니다.
(시스템: Mac OS 10.11.4, Darwin 커널 버전 15.4.0, OpenSSH_6.9p1, LibreSSL 2.1.8, Kerberos 5 버전 1.7)
디버그 출력
CL에서 SSH를 실행할 때 -vvv
자세한 디버깅 정보를 추가한 후 출력을 비교했습니다. 상당히 다른 부분을 포함시켰습니다.
$ ssh -vvv [ssh-alias]
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,keyboard-interactive,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password:
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
Authenticated to login.engin.umich.edu ([141.213.74.56]:22).
$ ssh -vvv [user@host]
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-keyex
debug3: remaining preferred: gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-keyex
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug2: we did not send a packet, disable method
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 141.213.74.58.
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Delegating credentials
debug1: Delegating credentials
debug1: Authentication succeeded (gssapi-with-mic).
Authenticated to login.engin.umich.edu ([141.213.74.58]:22).
답변1
내가 볼 수 있듯이 Kerberos 구성은 정규화되지 않은 호스트 이름( gato.example.org
)이 아닌 정규화된 호스트 이름( gato
)을 처리하며 정규화되지 않은 호스트 이름을 사용하면 ssh
디버그 라인을 테스트할 때 다음과 같은 결과가 생성됩니다.
debug1: Next authentication method: gssapi-with-mic
debug1: Miscellaneous failure (see text)
Error from KDC: LOOKING_UP_SERVER while looking up 'host/[email protected]' (cached result, timeout in 1089 sec)
/etc/krb5.keytab
이는 Kerberos 호스트의 파일에 일반적으로 정규화된 호스트 주체 항목만 있기 때문입니다 .
[root@gato ~]# strings /etc/krb5.keytab | head -3
EXAMPLE.ORG
host
gato.example.org
귀하의 로그는 모두 정규화된 login.engin.umich.edu
호스트 이름을 사용하는 것으로 보이므로 문제는 다른 것일 수 있지만 일반적으로 kerberos를 처리할 때는 정규화된 호스트 이름을 수동으로 강제하는 것이 가장 좋습니다 ~/.ssh/config
.
Host gato.example.org gato bubba
Hostname gato.example.org
또는 CanonicalizeHostname
키워드별로(세부 사항 및 고려 사항 참조 ssh_config(5)
)
주목해야 할 또 다른 사항은 이것이 login.engin.umich.edu
호스트 풀이라는 것입니다. 테스트해야 할 한 가지는 풀의 특정 노드가 kerberos에 대해 잘못 구성되어 비밀번호 인증으로 다시 전환되는지 여부입니다. 단, 다음과 같은 항목을 포함하도록 편집해야 합니다 /etc/hosts
.
141.213.74.56 login.engin.umich.edu
완료되면 테스트 항목을 삭제하는 것을 잊지 마세요. (Kerberos에서는 IP 주소를 사용하는 것이 좋지 않으므로 호스트 이름을 사용해야하므로 테스트가 필요합니다 /etc/hosts
.)