Я смонтировал сервер LDAP, я сгенерировал сертификаты для своих пользователей и хотел сохранить сертификаты в ldap (сами сертификаты, а не их каталоги), я нашел следующую схему, используемую для хранения открытого ключа, поэтому я добавил схему и соответствующие открытые ключи пользователей к серверу LDAP.
# octetString SYNTAX
attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey'
DESC 'MANDATORY: OpenSSH Public key'
EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
# printableString SYNTAX yes|no
objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
DESC 'MANDATORY: OpenSSH LPK objectclass'
MAY ( sshPublicKey $ uid )
)
Я исследую использование ssh для подключения к серверу с использованием открытого и закрытого ключей, и обнаружил, что для чтения ssh с открытого ключа сервера LDAP требуется команда AuthorizedKeysCommand и скрипт, который будет отвечать за поиск открытых ключ и передать его в LDAP, нашел этот скрипт для поиска открытого ключа ldap
#!/bin/bash
cn=$usuario
server=servus2.inf #Put your server IP
basedn=ou=usuarios,dc=servus2,dc=inf #Put your basedn
port=389
ldapsearch -x -h $server -p $port -b $basedn -s sub"(objectclass=posixAccount)(uid=$cn)" | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
Я положил его в папку /etc/ssh
и дал разрешение на выполнение всем пользователям, также дал диспетчеру разрешений на запись и чтение, После этого я добавил в строку file /etc/ssh/sshd_config
:
AuthorizedKeysCommand /etc/ssh/script.sh
и понял, что линия была PubkeyAuthentication yes
, поэтому после настройки я перезагружаю ssh-сервер. Клиент пытается подключиться к серверу через ssh следующим образом:
ssh -i claveprivada usuario@servus2.inf
, но ничто не заставляет меня следовать за мной. Я спрашиваю пароль, добавил опцию -vvv
, чтобы увидеть детали, которые происходили, но не скажи мне что-нибудь конкретное. Я думаю, что не читает строку AuthorizedKeysCommand
, которая не выходит в любое время. Я посмотрел журнал и не получил ошибку в отношении этой строки или сценария, поэтому я думаю, что это игнорирование строки.
Я искал информацию об этом и увидел, что в более ранних версиях была ошибка. Я не знаю, было ли это уже решено, но я обновил до версии в Ubuntu 16, OpenSSH 7.1p2, но это не помогло мне как обычно.
Кто-нибудь знает, как решить эту проблему?
Я попытался получить Открытый ключ определенного пользователя, который пытается войти в использование ssh. (чей Открытый ключ хранится в сервере LDAP). Ниже конфигураций, работавших для меня.
В /etc/ssh/sshd_config
AuthorizedKeysCommand /usr/bin/auth
AuthorizedKeysCommandUser nobody
и сценарий, который берет идентификатор пользователя (имя), поскольку вход ниже.
cn=$1
server=192.168.57.105 #Put your server IP
basedn=ou=users,dc=myorg,dc=org #Put your basedn
port=389
ldapsearch -x -h $server -p $port -o ldif-wrap=no -b $basedn -s sub "(&(objectClass=posixAccount)(uid=$cn))" | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'