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 창을 여는 것이지만 그 방법도 모르겠습니다.

이에 대한 해결책이 있습니까?

답변1

.bashrc를 수정하여 기존 실행 중인 ssh-agent를 찾을 수 있습니다.

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

# 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_PID및 변수가 기존 세션을 가리키도록 올바르게 설정되거나 필요한 경우 새 세션이 시작됩니다. 이렇게 하면 열려 있는 모든 WSL/터미널 세션에 하나의 공유만 사용됩니다.SSH_AUTH_SOCKssh-agentssh-agent

재미있는 재미있는 이야기 -- keychain원래 Gentoo Linux를 창립한 Daniel Robbins가 작성했습니다.

답변3

ssh-agent아마도 그렇지 않을 수도 있습니다. 이는 쉘의 상위 프로세스인 일반적인 방식으로 실행되는 것처럼 들립니다 . 다른 창에는 사용 중인 창과 연결되지 않는 자체 프로세스 상위/하위 계층 구조가 있습니다.

일하는 방법 중 하나~와 함께이 기능은 에이전트를 시작한 창 내에서 실행 (또는 ) ssh-agent하는 기능입니다 . 이러한 screen/tmux 창은 프로세스의 하위 창이기도 하며 문제 없이 프로세스와 대화할 수 있습니다.screentmuxssh-agent

답변4

지금은 있습니다. 최신 버전을 설치하세요.윈도우용 OpenSSH, 그런 다음SSH-에이전트-wsl돕는 사람. 지침을 따르면 WSL과 Windows에서 자격 증명을 공유하는 작업 방법을 매우 쉽게 얻을 수 있습니다! 그것은 매력처럼 작동합니다!

관련 정보