Як змусити ssh-агент працювати у всіх терміналах?


27

Я встановив автоматичне введення ssh на деякі сервери з використанням ssh-copy-id. ssh-agentпрацює лише з терміналу, де він був запущений. Як я можу ssh-addпрацювати на всіх своїх терміналах?

Природно, я б не віддав перевагу SSH-ключ без парольної фрази.

Відповіді:


26

Якщо ви входите в графічний сеанс, домовтеся про початок 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

FYI, причина, яку він перевіряє, $? -ge 2полягає в тому, що код виходу 1 - це коли у ssh-агента немає ключів, але ssh-агент вже працює.
Вісбукі

7

Ви, мабуть, хочете, щоб програма, наприклад 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.

дуже подобається цей!
Колін Д

Чудово! Дякую тобі. Працює чудово.
Хтось

це чудово спрацьовує, завантаживши стиснутий файл з Github, переконайтеся, що ви додали повний шлях до стисненого каталогу невтиснутих брелок-2.8.5 до вашого ~ / .bash_profile експорту PATH = $ PATH: рядок
Кевін Чжао

4

Застосуйте його до свого робочого середовища або вікна менеджера. Коли я це робив вручну вручну за допомогою спеціального користування ~/.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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.