SOGo использует имя пользователя для идентификации из LDAP

Жиль предположил, что анонимная конфигурация ssh будет «полезна только в крайне редких случаях», но одним из таких редких случаев является служба tmate , используемая разработчиками во всем мире для парного программирования и других видов общих сеансов терминала.

Вы можете использовать библиотеку Paramiko для Python, чтобы создать sshсервер, который будет принимать соединения с использованием любого открытого ключа, но будет отклонять соединения, которые не предоставляют никакого ключа..

Например:

#!/usr/bin/python
import paramiko
import socket
import threading

host_key = paramiko.RSAKey(filename='hostkey')


class Server(paramiko.ServerInterface):
    def __init__(self):
        self.event = threading.Event()

    def check_channel_request(self, kind, chanid):
        if kind == 'session':
            return paramiko.OPEN_SUCCEEDED

    def check_auth_publickey(self, username, key):
        return paramiko.AUTH_SUCCESSFUL

    def get_allowed_auths(self, username):
        return 'publickey'

    def check_channel_exec_request(self, channel, command):
        # This is the command we need to parse
        print('client sent command: {}'.format(command))
        self.event.set()
        return True


def listener():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('', 2222))

    sock.listen(100)
    client, addr = sock.accept()

    t = paramiko.Transport(client)
    t.set_gss_host(socket.getfqdn(""))
    t.load_server_moduli()
    t.add_server_key(host_key)
    server = Server()
    t.start_server(server=server)

    # Wait 30 seconds for a command
    server.event.wait(30)
    t.close()


while True:
    try:
        listener()
    except KeyboardInterrupt:
        pass

Это разрешит ssh-соединения, для которых доступен закрытый ключ. Не имеет значения, , какая клавиша используется. Он будет отклонять любые соединения, которые не поддерживают аутентификацию с открытым ключом.

0
02.11.2020, 14:38
1 ответ

Похоже, ночная сборка последних дней либо активировала эту функцию, либо исправила связанную с ней ошибку. Я не знаю, какая именно версия включала это изменение, и я не знаю, какое поле LDAP используется для этого (, возможно, это displayName, gecos и cn ), но знаю, что это работает так, как задумано.

0
18.03.2021, 22:57

Теги

Похожие вопросы