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