Повторное использование удаленные соединения SSH и уменьшает многословие входа команды/сессии?

У меня есть много систем, которые полагаются на зеркальное отражение прикладного уровня к вторичному серверу. Вторичный сервер вытягивает данные посредством ряда удаленных команд SSH, выполняемых на основном устройстве. Приложение является чем-то вроде черного квадрата, и я не могу делать модификации к сценариям, которые используются.

Моя проблема - то, что вход в систему/var/log/secure абсолютно лавинно рассылается запросами от пользователя услуги, admin. Эти команды происходят много раз в секунду и оказывают соответствующее влияние на журналы. Они полагаются на обмен ключа пароля меньше. Включенная ОС является EL5 и EL6. Пример ниже.

  • Есть ли любой способ уменьшить объем входа от этих действий. (Пользователем?По источнику?)
  • Существует ли более чистый способ для разработчиков выполнить это ssh выполнение, не порождая столько сессий? Кажется неэффективным. Действительно ли я могу снова использовать существующие соединения?

Журнал в качестве примера произвел:

Jul 24 19:08:54 Cantaloupe sshd[46367]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:54 Cantaloupe sshd[46446]: Accepted publickey for admin from 172.30.27.32 port 33526 ssh2
Jul 24 19:08:54 Cantaloupe sshd[46446]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:54 Cantaloupe sshd[46446]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:54 Cantaloupe sshd[46475]: Accepted publickey for admin from 172.30.27.32 port 33527 ssh2
Jul 24 19:08:54 Cantaloupe sshd[46475]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:54 Cantaloupe sshd[46475]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:54 Cantaloupe sshd[46504]: Accepted publickey for admin from 172.30.27.32 port 33528 ssh2
Jul 24 19:08:54 Cantaloupe sshd[46504]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:54 Cantaloupe sshd[46504]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:54 Cantaloupe sshd[46583]: Accepted publickey for admin from 172.30.27.32 port 33529 ssh2
Jul 24 19:08:54 Cantaloupe sshd[46583]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:54 Cantaloupe sshd[46583]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:54 Cantaloupe sshd[46612]: Accepted publickey for admin from 172.30.27.32 port 33530 ssh2
Jul 24 19:08:54 Cantaloupe sshd[46612]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:54 Cantaloupe sshd[46612]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:55 Cantaloupe sshd[46641]: Accepted publickey for admin from 172.30.27.32 port 33531 ssh2
Jul 24 19:08:55 Cantaloupe sshd[46641]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:55 Cantaloupe sshd[46641]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:55 Cantaloupe sshd[46720]: Accepted publickey for admin from 172.30.27.32 port 33532 ssh2
Jul 24 19:08:55 Cantaloupe sshd[46720]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:55 Cantaloupe sshd[46720]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:55 Cantaloupe sshd[46749]: Accepted publickey for admin from 172.30.27.32 port 33533 ssh2
Jul 24 19:08:55 Cantaloupe sshd[46749]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:55 Cantaloupe sshd[46749]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:55 Cantaloupe sshd[46778]: Accepted publickey for admin from 172.30.27.32 port 33534 ssh2
Jul 24 19:08:55 Cantaloupe sshd[46778]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Jul 24 19:08:55 Cantaloupe sshd[46778]: pam_unix(sshd:session): session closed for user admin
Jul 24 19:08:55 Cantaloupe sshd[46857]: Accepted publickey for admin from 172.30.27.32 port 33535 ssh2
3
задан 25 July 2014 в 08:26
3 ответа

Конкретный ответ на вопрос о том, возможно ли уменьшить накладные расходы нереста при большем количестве соединений SSH: Да. Вы можете использовать функцию ControlMaster, присутствующую в OpenSSH 5.5. Эта запись блога будет содержать более подробную информацию: http://puppetlabs.com/blog/speed-up-ssh-by-reusing-connections

Я не уверен, повлияет ли это на то, как много лесозаписей происходит. Но, в зависимости от того, как написано приложение, можно использовать эту возможность, не модифицируя приложение, а просто переконфигурировав OpenSSH. Допустим, он даже использует OpenSSH в качестве клиента, или другого клиента с такой поддержкой. Просто здесь недостаточно информации, чтобы сказать наверняка

.
3
ответ дан 3 December 2019 в 06:06

Так как вы используете rsyslog, у вас есть возможность довольно легко фильтровать сообщения . Основным примером отбрасывания сообщений является следующий:

#/etc/rsyslog.cof 

# this is original log file including all authpriv messages regarding admin
authpriv.* /var/log/secure.admin

# These rules filter the remote key based logins for admin
:msg, contains, "Accepted publickey for admin from 172.30.27.32" ~
:msg, contains, "session opened for user admin" ~
:msg, contains, "session closed for user admin" ~
authpriv.*     /var/log/secure

Тильда ~ - это инструкция по отбрасыванию сообщений, содержащая предыдущую строку.

Немного более продвинутым и лучшим синтаксисом (непроверенным) является :

if $syslogfacility-text == 'authpriv' and 
 ($msg contains 'for user admin' or $msg contains 'publickey for admin from 172.30.27.32') 
then /var/log/secure.admin

if $syslogfacility-text == 'authpriv' and not
 ($msg contains 'for user admin' or $msg contains 'publickey for admin from 172.30.27.32') 
then /var/log/secure

Где каждое оператор if идет на одну строку.

1
ответ дан 3 December 2019 в 06:06

Обновление этого....

Я решил эту проблему на своих RHEL/CentOS EL6 системах, включив функцию SSH ControlMaster:

В файле /home/username/.ssh/config соединительного хоста:

Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
#ControlPersist 600

В файле ~/. ssh/sockets/ необходимо создать вручную.

Директива ControlPersist является функцией сохранения, которая не была возвращена в OpenSSH, доступной в EL6. Хотелось бы, чтобы так и было, потому что без нее мультиплексирующие соединения завершаются после разрыва исходного соединения.

Я обошел это с помощью быстрого и грязного скрипта Monit на соединяющемся хосте.

check process ssh-control
        matching "MNn"
        start program = "/usr/bin/ssh -MNn destination" as uid username
        stop program = "/usr/bin/pkill -u username ssh"

Где находится система, к которой я подключаюсь, и является служебной учетной записью системы репликации приложений (admin в данном случае).

ssh -M ssh -M используется для разделения соединений master-mode и SSH.

-M Переводит ssh-клиент в режим "master" для разделения соединений. Несколько мест опций -M ssh в режим "ведущий" с подтверждением, которое требуется до того, как будут приняты подчинённые соединения.

Результатом всего этого является чистые журналы ... и что всплеск команд ssh, инициированный сервером репликации, повторно использует открытый сокет, созданный ведущим соединением.

Как только эта функция попадёт в пакет EL6 OpenSSH, я смогу избавиться от скрипта Monit и просто использовать параметр ControlPersist.

.
0
ответ дан 3 December 2019 в 06:06

Теги

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