слишком много процессов ssh-agent на пользователя на нескольких серверах [закрыто]

У некоторых пользователей возникли проблемы с использованием ssh-agent в их среде входа в систему. sri, например, 1295 из них работают на login02. И у многих других пользователей такая же проблема.

Я наблюдаю ту же проблему на других машинах, а также у других людей.

sri 32586  0.0  0.0  11144     0 ?        Ss    2019   0:00 ssh-agent
sri 32598  0.0  0.0  11144  1304 ?        Ss   Jan13   0:03 ssh-agent
sri 32608  0.0  0.0  11148     0 ?        Ss    2019   0:00 ssh-agent
sri 32610  0.0  0.0  11152     0 ?        Ss   Jan22   0:00 ssh-agent
sri 32640  0.0  0.0  11148     0 ?        Ss    2019   0:00 ssh-agent
sri 32643  0.0  0.0  11148     0 ?        Ss    2019   0:00 ssh-agent
sri 32656  0.0  0.0  11144     0 ?        Ss    2019   0:00 ssh-agent
sri 32711  0.0  0.0  11152     0 ?        Ss    2019   0:00 ssh-agent
sri 32715  0.0  0.0  11144     0 ?        Ss    2019   0:00 ssh-agent
sri 32755  0.0  0.0  11152     0 ?        Ss    2019   0:00 ssh-agent
sri 32765  0.0  0.0  11148     0 ?        Ss    2019   0:00 ssh-agent
root@login02:~$ ps -aux | grep ssh-agent | grep sri | wc -l
1295
root@login02:~$ ps -aux | grep ssh-agent  | wc -l
1509
root@login02:~$

Подскажите, пожалуйста, как решить эту проблему. Спасибо

1
задан 20 February 2020 в 01:08
1 ответ

Ваш пользователь, вероятно, порождает эти ssh-agent в своих сценариях инициализации оболочки ( .profile , .bashrc или аналогичный), но забыл убить агента в сценариях выхода из системы. Возможно, даже глобальные сценарии инициализации оболочки порождают ssh-agent .

Один из способов остановить эту процедуру - предложить пользователям общесистемный способ администрирования ssh-agent .

Самый простой способ контролировать количество ssh-agent экземпляров - использовать systemd вместе с pam_systemd . Это вызовет SystemD User Manager для каждого вошедшего в систему пользователя и завершится при выходе из последней пользовательской сессии. Кроме того, он позволяет определять пользовательские службы, время жизни которых не зависит от пользовательских сеансов.

Ubuntu 16.04 не предоставляет .service файлы для ssh-agent (в более новых версиях есть ), но вы можете создать его самостоятельно, добавив файл /etc/systemd/user/ssh-agent.service с содержимым:

[Unit]
Description=OpenSSH Agent
Documentation=man:ssh-agent(1)
Before=default.target
Wants=dbus.socket
After=dbus.socket

[Service]
ExecStart=/usr/bin/ssh-agent -D -a %t/ssh-agent

и символической ссылкой на файл в / etc / systemd / user / default.target.wants каталог:

mkdir -p /etc/systemd/user/default.target.wants
ln -s ../ssh-agent.service /etc/systemd/user/default.target.wants

, за которым следует systemctl daemon-reload . Вам также необходимо добавить в /etc/bash.bashrc следующую строку:

export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent

После этого шага настройки:

  • при первом подключении пользователя к системе ssh -agent будет создан. Вы можете проверить его статус с помощью:

     systemctl --user status ssh-agent.service
     
  • каждый клиент ssh в каждом сеансе будет иметь доступ к одному и тому же ssh-агенту,

  • когда завершится последний сеанс пользователя, то же самое делает ssh-агент.

1
ответ дан 25 February 2020 в 23:33

Теги

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