키가 저장된 컴퓨터에서 SSH를 통해 연결하여 두 번째 컴퓨터로 전달한 다음 tmux 내에서 키를 사용하려고합니다. tmux에 들어갈 때 전달을 “느슨하게”하는 것 같습니다. tmux 내에서 키를 사용할 수 있도록 “다시 전달”하는 방법은 무엇입니까?
$ ssh [server] -o ForwardAgent=yes
$ git pull # Succeeds.
$ /bin/bash
$ git pull # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull # Permission denied (publickey)
답변
이미 존재하는 tmux 세션을 연결하는 경우, 쉘은 로그인 쉘에서 환경 변수를 상속하지 않습니다. 특히 ssh 에이전트 환경 변수를 상속하지 않습니다.
-
이 스크립트를 작성하여 $ HOME / .ssh / saveagent에 넣으십시오.
#!/bin/sh SSHVARS="SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION DISPLAY" for var in ${SSHVARS} ; do echo "export $var=\"$(eval echo '$'$var)\"" done 1>$HOME/.ssh/latestagent
-
쉘 시작 스크립트에 추가하십시오. 예를 들어 bash를 사용하는 경우 :
echo '. ~/.ssh/saveagent' >> ~/.bash_login
-
tmux를 연결 한 후 다음을 실행하십시오.
. $HOME/.ssh/latestagent
참조 어떻게 SSH를 통해 연결 한 후 스크립트를 즉시 실행할 수 있습니까? 및 TMUX 세션에 연결하고 명령을 실행
답변
동일한 tmux
서버 세션에 의해 생성 된 새 쉘에서 추가로 생성되는 모든 쉘에 필요한 모든 변수를 포함하는 스크립트를 제공하지 않는 한 , 명령을 사용 tmux
하여 변수를 세션 또는 전역 환경에 배치하도록 지시 할 수 set-environment
있습니다. 예를 들어 다음과 같습니다 (bash의 경우).
for var in DISPLAY SSH_AUTH_SOCK ...; do
tmux setenv "$var" "${!var}"
done
-g
다른 세션에서도 플래그 를 추가하고 -t <session>
외부에서 실행중인 경우 플래그 를 추가해야합니다 tmux
.
답변
여기에서 다른 답변을 읽은 후에는 공개 / 개인 키 쌍을 원격 서버에 복사하기 만하면 더 이상 에이전트 전달에 대해 걱정할 필요가 없습니다.