Я хочу аутентифицироваться с SSH через Kerberos SSO. Теперь, когда я вошел в систему с моим основным пользователем на sourcehost
я получаю свой билет Kerberos, но не могу использовать его для SSH в targethost
.
Проблема, кажется, имя хоста. У меня есть основной host/targethost.example.com@EXAMPLE.COM
но независимо от того, если я ssh targethost
или ssh targethost.example.com
он переводится в основной host/targethost@EXAMPLE.COM
(см. Сообщение об ошибке ниже), который не существует
Я могу ошибаться, но я думаю, что все должно быть наоборот, и ssh targethost
и ssh targethost.example.com
должны быть переведены в основной host/targethost.example.com@EXAMPLE.COM
.
Вот ошибка:
$ ssh targethost.example.com -v
...
debug1: Unspecified GSS failure. Minor code may provide more information
Server host/targethost@EXAMPLE.COM not found in Kerberos database
debug1: Unspecified GSS failure. Minor code may provide more information
Server host/targethost@EXAMPLE.COM not found in Kerberos database
debug1: Unspecified GSS failure. Minor code may provide more information
...
debug1: Next authentication method: password
testuser@targethost.example.com's password:
Кто-нибудь может объяснить, как принципал хоста получен из имени хоста и как это можно настроить (я, кстати, на Ubuntu)?
Редактировать:
Ответ grawity привел меня к решению, которое я считаю подходящим для моей конфигурации.
- В книге Гармана Kerberos я обнаружил, что канонизация на стороне KDC была предпочтительным способом.
- Для моего KDC, поддерживаемого LDAP, я нашел в документации Kerberos (внизу этой страницы) способ, как это можно реализовать.
Поэтому после создания принципала узла с помощью kdadmin.local
/ addprinc
с полным доменным именем мне пришлось добавить псевдоним к новой записи субъекта в LDAP, запустив ldapmodify
со следующим вводом:
dn: krbPrincipalName=host/targethost.example.com@EXAMPLE.COM,cn=EXAMPLE.COM,cn=krbContainer,dc=example,dc=com
replace: krbCanonicalName
krbCanonicalName: host/targethost.example.com@EXAMPLE.COM
-
add: krbPrincipalName
krbPrincipalName: host/targethost@EXAMPLE.COM