tmux(및 화면) 세션 내에서 GUI 세션의 SSH 에이전트와의 연결을 다시 설정하는 해킹을 많이 보았습니다. GUI에서 분리하고 주어진 tmux 세션 내에서만 사용하기 위해 ssh-agent를 생성할 수 있는지 궁금합니다. 에이전트 자체가 종료되는 것을 방지하기 위해 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
최근에 제가 찾은 또 다른 옵션은 Daniel Robbins의 것입니다.열쇠고리세션 전체 에이전트 대신 사용자/호스트 전체 에이전트를 다시 연결하고 보유할 수 있는 깔끔한 방법을 제공하는 유틸리티입니다.