как процесс ssh-agent увеличивается при каждом входе в систему

я добавлял следующую строку в свой .bashrc для запуска ssh-agent, если он не запущен.

if [ -z "$SSH_AUTH_SOCK" ];then eval `ssh-agent -s`;ssh-add ~/.ssh/my_private_key;fi

Но каждый раз, когда я снова вхожу в систему, количество процессов ssh-agent увеличивается Как этого избежать. пожалуйста, просмотрите следующие журналы и скажите, что я сделал не так.

[vm@localhost ~]$ ssh root@192.168.x.x
Last login: Wed Feb 15 06:32:07 2017 from x.x.x.x
[root@server ~]#  pgrep ssh-agent | wc -l
2
[root@server ~]# exit
Shared connection to x.x.x.x closed.

[vm@localhost ~]$ ssh root@192.168.x.x
Last login: Wed Feb 15 06:32:20 2017 from x.x.x.x
[root@server ~]#  pgrep ssh-agent | wc -l
3
[root@server ~]# exit
Shared connection to x.x.x.x closed.

[vm@localhost ~]$ ssh root@192.168.x.x
Last login: Wed Feb 15 06:32:25 2017 from x.x.x.x
[root@server ~]#  pgrep ssh-agent | wc -l
4
2
задан 15 February 2017 в 09:20
1 ответ

Прежде всего, вы делаете это во время сеанса ssh? Если да, то вы можете использовать ssh -A (скрытый) и даже не использовать ssh-agent. Параметр -A перенаправит ssh-agent вашего хоста на удаленный сервер. Тогда вам даже не нужно копировать ключи ssh на удаленный сервер.

Вернемся к исходному вопросу: проблема с запуском ssh-agent заключается в том, что по умолчанию он будет использовать другой случайный сокет имя каждый раз. Вот почему ваши процессы ssh-agent продолжают расти. Что вы хотите сделать, так это использовать параметр ssh-agent -a , чтобы предоставить фиксированный сокет. Тогда, сколько бы раз вы его ни вызывали, он не запустит другой ssh-agent.

Вот простой сценарий, который всегда будет повторно использовать один и тот же ssh-agent или запускать ssh-agent, если он не запущен. . Вы также можете легко объединить эти 3 строки в псевдоним одной строки.

# set SSH_AUTH_SOCK env var to a fixed value
export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock

# test whether $SSH_AUTH_SOCK is valid
ssh-add -l 2>/dev/null >/dev/null

# if not valid, then start ssh-agent using $SSH_AUTH_SOCK
[ $? -ge 2 ] && ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null

source

0
ответ дан 3 December 2019 в 14:15

Теги

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