Мы используем реализацию Mercurial и отправляем данные на сервер репозитория с помощью аутентификации с открытым ключом, которая берет последнюю версию и отправляет ее на наши веб-серверы через хуки, также используя аутентификацию с открытым ключом (таким образом, два соединения с использованием аутентификации с открытым ключом). Это работает, но даже крошечные коммиты проходят через 5-10 секунд.
Я считаю, что это из-за аутентификации с открытым ключом, поскольку я знаю, что при подключении через терминал с использованием аутентификации с открытым ключом требуется секунда или две, чтобы войти в систему и показать баннер. Есть ли способ сделать это (вход в систему) быстрее?
Кстати, есть ли способ предотвратить переход ssh-баннера на стандартный вывод, кроме его отключения? Он появляется в статусе возврата и довольно раздражает.
echo "GSSAPIAuthentication no" > /home/`whoami`/.ssh/config
Раньше: 0 мин. 15,512 сек.
После: 0 мин. 0,611 сек.
Причиной этого также может быть медленный обратный DNS. Вы можете попробовать добавить UseDNS no
к вашему серверу Mercurial sshd_config
файл и посмотрите, поможет ли?
Я выяснил, что такое Control Masters, и использовал это для второго соединения, чтобы почти мгновенно установить соединения после первого соединения. Я придерживаюсь идеи, что 2 секунды - это всего лишь часть процесса соединения, когда соединение установлено. Выбор определенных ключей и выполнение различных параметров командной строки в среднем не сильно улучшали время.
Если у вас много ключей ssh на стороне клиента, это замедляет весь процесс аутентификации, так как ему необходимо отправлять каждый открытый ключ, чтобы он соответствовал авторизованным ключам сервера.
К тому же, если ваш сервер и так немного медленный, он легко выйдет из строя.