Ответы:
Если вы входите в графическую сессию, подготовьтесь к запуску ssh-agent
во время ее запуска. Некоторые дистрибутивы уже делают это для вас. Если у вас нет, организуйте запуск ssh-agent
из сценария запуска сеанса или из оконного менеджера. Как это сделать, зависит от среды вашего рабочего стола и вашего оконного менеджера. Например, если вы начинаете ваш оконный менеджер вручную, просто заменить вызов my_favorite_wm
на ssh-agent my_favorite_wm
.
Не начинайте ssh-agent
с .bashrc
или .zshrc
, так как эти файлы выполняются каждой новой интерактивной оболочкой. Место для начала ssh-agent
находится в файле запуска сеанса, таком как .profile
или .xsession
.
Если вы хотите использовать один и тот же агент SSH во всех процессах, независимо от того, откуда вы вошли, вы можете сделать так, чтобы он всегда использовал одно и то же имя сокета, а не сокет с произвольным именем. Например, вы можете поместить это в ваш ~/.profile
:
export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi
Возможно, вам нужна такая программа, как Keychain , которая была разработана именно для этой цели. Со страницы руководства:
DESCRIPTION
keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
It allows your shells and cron jobs to share a single ssh-agent process.
Примените его к своему рабочему столу или оконному менеджеру. Когда я делал это в прошлом вручную ~/.Xclients
, я использовал это как последнюю строку:
ssh-agent mywindowmanger
Там могут быть некоторые DE, которые имеют свои собственные параметры настройки для этого, хотя мне кажется, что (например) KDE нет. В настоящее время кажется, что мой был запущен с помощью кода из /etc/X11/xinit/xinitrc-common
(предположительно что-то, сделанного fedora), так как он активен для всех пользователей независимо от DE / WM и родительской команды процесса $HOME/.Xclients
, но этот файл не ссылается ssh-agent
(тогда как /etc/X11/xinit/xinitrc-common
делает).
Если у вас его нет ~/.Xclients
, вы можете создать его, используя только одну строку, но вам нужно знать команду, которая запускает вашу DE / WM.
$? -ge 2
заключается в том, что код выхода 1 - это когда ssh-agent не имеет ключей, но ssh-agent уже запущен.