4

Я видел много хаков для восстановления связи с SSH-агентом сеанса GUI из сеансов tmux (и screen). Я спрашиваю себя, возможно ли отсоединиться от GUI и создать ssh-agent исключительно для использования в рамках данного сеанса tmux? Придется ли самому агенту «использовать» одно из окон tmux, чтобы не быть убитым, или возможно ли его появление в фоновом режиме, которое сохраняется, пока сеанс жив?

3 ответа3

3

ОК, я еще немного покопался, и я смог бы легко подключиться к тому, что есть в SSH_AGENT, когда терминал подключен. tmux уже предоставляет конфигурацию ключей «update-environment», однако отсутствующим элементом являются существующие оболочки, которые волшебным образом не обновляются. Однако tmux отслеживает обновленные переменные окружения, поэтому скрипт обновления намного проще, чем экраны:


# Sync the environment of an existing shell
#
#  tmux already updates the environment according to
#  the update-environment settings in the config. However
#  for existing shells you need to sync from from tmux's view
#  of the world.
function tmux_sync_env
{
    external_env=`tmux showenv | grep -v "^-"`
    export ${external_env}
}

Из этого коммита

2

Мне пришлось изменить ответ @ stsquad. Это не помогло мне, потому что команда export не смогла установить переменную SSH_CONNECTION .

Мне пришлось обернуть значение SSH_CONNECTION в кавычки.

function tmux_sync_env
{
    ssh_auth_sock=`tmux showenv | grep "^SSH_AUTH_SOCK"`
    ssh_connection=`tmux showenv | grep "^SSH_CONNECTION"`
    export ${ssh_auth_sock}
    export "${ssh_connection}"
}
0

Другой вариант, который я недавно нашел, - это утилита цепочки для ключей Даниэля Роббинса, которая предлагает удобный способ переподключения и использования агента пользователя / хоста, а не только сеанса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .