WSL2 Ubuntu: ssh-agent를 시작하고 모든 터미널 시작 시 SSH 키를 자동으로 추가하는 방법

WSL2 Ubuntu: ssh-agent를 시작하고 모든 터미널 시작 시 SSH 키를 자동으로 추가하는 방법

터미널에서 WSL2를 사용하고 있으며 Ubuntu가 설치되어 있습니다. 내 항목에 다음을 추가했습니다 .bashrc.

# Start ssh-agent
# check if ssh-agent is already running
if [ -z "$SSH_AUTH_SOCK" ]; then
     #start ssh-agent
    eval "$(ssh-agent -s)"
fi


# Ask for ssh-add
read -p "Do you want to add your SSH public key? (y/n) " response

if [ "$response" = "y" ]; then
  ssh-add ~/id_rsa
  ssh-add -l
elif [ "$response" = "n" ]; then
  echo "No identity on terminal session"
else
  echo "Invalid response"
fi

내 생각은 새 터미널을 열 때마다 ID가 필요한지 묻는 메시지를 표시한 다음 ssh-agent를 시작하고 필요한 경우 키를 추가하는 것입니다. 처음에는 스크립트가 작동하는 것처럼 보이며 에이전트의 PID를 표시하고 SSH 비밀번호를 묻는 메시지를 표시합니다. 이렇게 하면 SSH 에이전트를 볼 수 있습니다 top. 그러나 이러한 명령의 출력을 보더라도 실제로 ssh-agent를 초기화하거나 키를 추가하지는 않습니다. 나는 심지어 이것을 했고 ssh-add -l결과는 다음과 같습니다:The agent has no identities.

이 작업을 어떻게 수행합니까? 이는 WSL 문제여야 합니다.

답변1

음... 로드해 보세요 ~/id_rsa. 일반적으로 키는 ~/.ssh폴더에 있습니다 . AFAIR ssh는 파일 및 폴더 권한에 대해서도 매우 까다롭습니다. SSH가 충분히 안전하다고 간주하지 않는 디렉토리에 키가 있으면 키를 사용하지 않습니다.

키가 실제로 에 있는 경우 ~키(및 해당 .pub파일) 를 ~/.ssh해당 폴더로 이동합니다. 파일과 스키마 ~/.ssh가 있는지 확인하세요 . 스키마도 있어야 합니다 . 이를 수행하는 방법을 모르는 경우 chmod(1)를 참조하십시오.0700~/.ssh/id_rsa0600

또한 ssh-add에 파일 이름을 제공할 필요가 없습니다. 매뉴얼 페이지에 따르면:

ssh-add인증 에이전트에 개인 키 ID를 추가합니다 ssh-agent(1). 인수 없이 실행하면 파일 ~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, 및 가 ~/.ssh/id_ed25519추가 됩니다 . 개인 키를 로드한 후...~/.ssh/id_ed25519_sk~/.ssh/id_dsa

간단히 말해서:

  • 주요 파일이 ~/.ssh폴더에 있는지 확인하세요.
  • .bashrc파일 에서 ssh-add.

참고 사항: 문제가 있다고 해서 .bashrc반드시 좋은 것은 아닙니다. .bashrc이는 비대화형으로 로드할 때 존재합니다(그러나 WSL에는 존재하지 않을 수도 있음). 정말로 질문하고 싶다면 답변을 읽고 테스트를 통해 모든 것을 확보하십시오.PS1

if test "$PS1"; then
  if [ -z "$SSH_AUTH_SOCK" ]; then
    #start ssh-agent
    eval "$(ssh-agent -s)"
  fi

  # Ask for ssh-add
  read -p "Do you want to add your SSH public key? (y/n) " response

  # and so on...
fi

편집자 참고 사항:

내 것이 아니고 다른 사람이 추가한 기술 텍스트를 제거했습니다. 스타일, 문법, 오타 등의 수정을 환영합니다. 누군가 추가됨그의 그녀아이디어내 거답변은 감사하지 않습니다. 감사해요.

관련 정보