연결 해제 된 Screen 세션을 통해 SSH 키 전달을 다시 첨부 할 수 있습니까? [복제]


6

중복 가능성 :
바스 티언 호스트에서 화면 또는 tmux를 사용하는 ssh-agent 키 타임 아웃

내가 미끼 (PuTTy SSH 키 에이전트)를 실행하는 노트북이 있습니다. 시스템에 ssh하고 화면을 시작하면 ssh 키 전달이 제대로 작동합니다.

그러나 화면 세션에서 연결을 끊고 로그 오프했다가 나중에 다시 연결하면 키 전달이 더 이상 작동하지 않습니다. 나는 이전의 것보다 새로운 포워딩 세션을 위해 다른 포팅에 키 포워딩이 설정되어 있기 때문에 이것을 생각하고있다.

개별 화면 창에 에이전트 포워딩에 다시 연결되도록 가르쳐서 내 키를 다시 전달할 수 있습니까?

답변:


6

내 솔루션은 좀 더 강력합니다. 이것을 원격 측의 .bash_profile에 넣으십시오.

if [ -z "${STY}" -a -t 0 ]; then
    reattach () {
        if [ -n "${SSH_AUTH_SOCK}" ]; then
            ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-screen"
            SSH_AUTH_SOCK="${HOME}/.ssh/agent-screen" export SSH_AUTH_SOCK
        fi
        exec screen -A -D -RR ${1:+"$@"}
    }
fi

그런 다음 reattach 대신에 screen. 이것은 다음을 사용하여 수행 할 수 있습니다. command screen -A ${1:+"$@"} '재 부착'대신 '화면'을 선택하십시오.

@David Mackintosh의 대답에서 '별칭'솔루션을 사용할 때의 문제점은 화면에서 실행중인 프로세스가 이제 원격 측에서 동일한 SSH_AUTH_SOCK 값을 갖게된다는 것입니다. 다음 장면을 생각해보십시오.

  • 로컬 : SSH 에이전트 시작하기 SSH_AUTH_SOCK
  • 로컬 : SSH를 원격으로 설정하고 새로운 설정 SSH_AUTH_SOCK 리모컨의 가치
  • 원격 : 시작 screen 또는 tmux, SSH_AUTH_SOCK 사용
  • 원격 : SSH_AUTH_SOCK을 상속 한 쉘 생성 screen
  • 원격 : 화면에서 분리하고 로그 아웃합니다.
  • 로컬 : SSH에서 원격으로, 설정 새로운 SSH_AUTH_SOCK 리모컨의 가치
  • 원격 : 화면 세션에 다시 연결합니다. 늙은 SSH_AUTH_SOCK

트릭은 새로운 값을 사용하기 위해 화면 내에서 실행되는 프로세스를 가져 오는 것입니다. 당신은 현재의 심볼릭 링크를 repointing하여 할 수 있습니다 SSH_AUTH_SOCK 전화 할 때마다 screen (신규 또는 다시 연결된 세션 용).


1

이것은 실제로 중복의 : 바스 티언 호스트에서 화면 또는 tmux를 사용하는 ssh-agent 키 타임 아웃

해결책:

  • .bash_profile에 다음을 추가하십시오 :

    echo "export SSH_AUTH_SOCK = $ SSH_AUTH_SOCK"& gt; ~ / .ssh / auth_sock

  • .bashrc에 다음을 추가하십시오 :

    별칭 ssh = "소스 ~ / .ssh / auth_sock; ssh"

이것은 나를 위해 지금까지 작동하는 것 같습니다.


내가 연결된 질문에 대한 답을 썼습니다. 그것이 당신을 위해 일한다는 것을 듣기 좋다. 나는 그것을 시험하지 않았고, 나는 그것이 충분히 완전하다는 것을 확신하지 못했습니다! :)
chepner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.