Linux용 Windows 하위 시스템 - 공유 ssh-agent?

Linux용 Windows 하위 시스템 - 공유 ssh-agent?

Windows 10의 WSL(Linux용 Windows 하위 시스템) 셸에서 Ubuntu 16.04를 실행하고 있습니다. 터미널 내에서 ssh-agent를 시작하고 터미널 수명 동안 여러 번 사용할 수 있습니다. ps와 Windows 10 작업 관리자에서 ssh-agent가 실행되는 것을 볼 수 있습니다.

그러나 시작 메뉴에서 두 번째 WSL bash 터미널을 실행하면 ssh-agent를 인식하지 못합니다. 이상하게도 Windows 명령줄에서 두 번째 터미널을 시작하면 작동합니다. 가능한 해결책 중 하나는 기존 bash 창에서 새 bash 창을 여는 것입니다. 하지만 그 방법도 모르겠습니다.

이 문제를 해결할 방법이 있나요?

답변1

.bashrc를 수정하여 기존 실행 중인 SSH 에이전트를 찾을 수 있습니다.

나는 다음을 기반으로 뭔가를 사용합니다.요점

# ssh-agent configuration
if [ -z "$(pgrep ssh-agent)" ]; then
    rm -rf /tmp/ssh-*
    eval $(ssh-agent -s) > /dev/null
else
    export SSH_AGENT_PID=$(pgrep ssh-agent)
    export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi

# optional... potentially annoying
#if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
#    ssh-add
#fi

답변2

또 다른 새로운 답변 덕분에 이것을 발견했지만 여기에 있는 대부분의 답변은 일종의 시작 스크립트 조정(예: ~/.bashrc)을 제안합니다. 바퀴를 재발명하지 않는 것이 좋습니다.keychain.

설치한 후(예를 들어 대부분의 배포 저장소에서 사용 가능 sudo apt install keychain) 다음을 추가하기만 하면 됩니다.

eval $(keychain --eval --agents ssh id_rsa)

...당신에게 ~/.bashrc. 그러면 현재 세션 SSH_AGENT_PIDSSH_AUTH_SOCK변수가 기존 세션을 가리키도록 올바르게 설정되거나 ssh-agent필요한 경우 새 세션이 시작됩니다. 이렇게 하면 ssh-agent열려 있는 모든 WSL/터미널 세션이 하나의 공유만 사용합니다.

흥미로운 정보 - keychain원래 Gentoo Linux 창시자인 Daniel Robbins가 작성했습니다.

답변3

ssh-agent어쩌면 그렇지 않을 수도 있습니다. 쉘의 상위 프로세스로서 일반적인 방식으로 실행되는 것처럼 들립니다 . 다른 창에는 작업 중인 창과 별개인 자체 프로세스 상위/하위 계층 구조가 있습니다.

일하는 방식그리고이 기능은 에이전트가 시작 (또는) 된 창에서 ssh-agent실행 됩니다. 이러한 screen/tmux 창은 프로세스의 하위 창이기도 하며 문제 없이 통신할 수 있습니다.screentmuxssh-agent

답변4

이제 있습니다. 최신 버전을 설치하세요Windows용 OpenSSH, 그런 다음SSH-에이전트-wsl돕는 사람. 지침을 따르면 WSL과 Windows 간에 자격 증명을 효율적으로 공유할 수 있습니다! 그것은 매력처럼 작동합니다!

관련 정보