Как заставить ssh-agent работать во всех терминалах?
27
Я настроил автоматический (без пароля) вход по ssh на некоторые серверы, используя ssh-copy-id. ssh-agentработает только с терминала, где он был запущен. Как мне начать ssh-addработать во всех моих терминалах?
Естественно, я бы не предпочел SSH-ключ без ключевой фразы.
Если вы входите в графическую сессию, подготовьтесь к запуску 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
Кстати, причина, по которой он проверяет, $? -ge 2заключается в том, что код выхода 1 - это когда ssh-agent не имеет ключей, но ssh-agent уже запущен.
wisbucky
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, убедитесь, что вы добавили полный путь к каталогу несжатого keychain-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делает).
Если у вас его нет ~/.Xclients, вы можете создать его, используя только одну строку, но вам нужно знать команду, которая запускает вашу DE / WM.
$? -ge 2
заключается в том, что код выхода 1 - это когда ssh-agent не имеет ключей, но ssh-agent уже запущен.Возможно, вам нужна такая программа, как Keychain , которая была разработана именно для этой цели. Со страницы руководства:
источник
Примените его к своему рабочему столу или оконному менеджеру. Когда я делал это в прошлом вручную
~/.Xclients
, я использовал это как последнюю строку:Там могут быть некоторые DE, которые имеют свои собственные параметры настройки для этого, хотя мне кажется, что (например) KDE нет. В настоящее время кажется, что мой был запущен с помощью кода из
/etc/X11/xinit/xinitrc-common
(предположительно что-то, сделанного fedora), так как он активен для всех пользователей независимо от DE / WM и родительской команды процесса$HOME/.Xclients
, но этот файл не ссылаетсяssh-agent
(тогда как/etc/X11/xinit/xinitrc-common
делает).Если у вас его нет
~/.Xclients
, вы можете создать его, используя только одну строку, но вам нужно знать команду, которая запускает вашу DE / WM.источник