У некоторых пользователей возникли проблемы с использованием 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:~$
Подскажите, пожалуйста, как решить эту проблему. Спасибо
Ваш пользователь, вероятно, порождает эти 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-агент.