Можно ли создать ssh-agent для нового сеанса tmux?

Можно ли создать ssh-agent для нового сеанса tmux?

Я видел много хаков для восстановления контакта с агентом SSH сеанса GUI из сеансов tmux (и screen). Интересно, можно ли отделить GUI и создать агента ssh исключительно для использования в данном сеансе tmux? Должен ли сам агент "использовать" одно из окон tmux, чтобы его не убили, или возможно создать его в фоновом режиме, который будет существовать, пока сеанс жив?

решение1

Хорошо, я немного покопался и должен иметь возможность легко подключиться к любому 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}"
}

решение3

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

Связанный контент