Відповіді:
Якщо ви входите в графічний сеанс, домовтеся про початок 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
).
Якщо у вас немає A ~/.Xclients
, ви можете створити його лише з одного рядка, але вам потрібно знати команду, яка запускає ваш DE / WM.
$? -ge 2
полягає в тому, що код виходу 1 - це коли у ssh-агента немає ключів, але ssh-агент вже працює.