git 작업을 수행하는 데 사용되는 SSH 키가 Windows에서 이후에 새 터미널을 열 때 한 번만 해독되는 것을 방지하는 방법은 무엇입니까?

git 작업을 수행하는 데 사용되는 SSH 키가 Windows에서 이후에 새 터미널을 열 때 한 번만 해독되는 것을 방지하는 방법은 무엇입니까?

리눅스

내 Linux 시스템에서는 시스템을 부팅할 때마다 개인 SSH 키의 암호를 해독합니다. 부팅되면 터미널을 열고 다음을 실행합니다.

ssh-add ~/.ssh/id_rsa_some_key

git clone <git-url>와 같은 git 작업을 수행할 준비가 되었습니다 git pull -a. 다른 터미널을 열고 해당 명령을 다시 실행하면 암호화된 SSH 키의 비밀번호를 입력하라는 메시지가 팝업되지 않습니다. 요약하자면, 내 Linux 시스템에서는 비밀번호를 한 번만 입력하면 됩니다.

윈도우

내 작업에는 Windows 시스템이 있습니다. 부팅되면 열립니다.git-bash그리고 발행:

eval $(ssh-agent)

그리고 ssh-add ~/.ssh/private_key비밀번호를 입력하고 git 저장소와 통신할 수 있는 git 명령을 실행하세요. 내 Linux 시스템과 달리 새 git-bash를 열고 git 명령을 실행하면 비밀번호를 입력하라는 메시지가 나타납니다. 요약하자면, git-bash 터미널에서 개인 키를 복호화하면 git 저장소와 상호 작용할 수 있지만 새 터미널이 열리면 ssh-key를 다시 복호화해야 합니다.

나는 무엇을 시도 했는가?

미인대회를 이용하려고 했는데요. 첫 번째 문제는 id_rsa가 적합하지 않다는 것입니다. puttygen을 사용하여 새 키를 생성해야 했지만 git@으로 시작하는 ssh git url을 사용할 수 없다는 것이 밝혀졌습니다. https URL로 바꿔야 했는데, 그건 제가 원하는 것이 아닙니다.

나는 어떤 대답을 선호하는가

나는 다음 기준을 충족하는 답변을 선호합니다.

  1. SSH 키는 Windows 시스템이 부팅되고 git 작업을 수행하기 위해 터미널이 열릴 때 한 번 해독되어야 합니다.
  2. 새 터미널이 열리면 계속해서 git 저장소와 상호 작용할 수 있습니다. 즉, 비밀번호를 입력하라는 메시지가 팝업되지 않습니다.
  3. 나는 git-bash에 전념하지 않습니다. 처음 두 기준과 일치하는 다른 터미널이 Windows에 있으면 괜찮습니다.

답변1

명령

eval $(ssh-agent)

SSH 에이전트 프로세스(Pageant와 동일)를 시작하고 일반적으로 SSH_AUTH_SOCK 및 SSH_AGENT_PID라는 두 가지 환경 변수를 생성합니다(적어도 Linux에서는 Windows git-bash가 여기서 차이를 만드는지 알 수 없습니다. 아마도 그렇지 않을 것입니다).

SSH_AUTH_SOCK 변수가 설정되어 있고 유효한 인증 에이전트 소켓을 가리키는 경우 변수를 읽을 수 있는 모든 프로세스에서 이를 사용할 수 있습니다. 따라서 이 변수의 값을 한 git-bash 세션에서 다른 세션으로 전파하는 방법이 필요합니다. SSH_AGENT_PID 변수는 필요한 경우 에이전트를 쉽게 종료할 수 있도록 하는 편의를 위한 것입니다.

해당 환경 변수(또는 SSH_AUTH_SOCK만)를 파일에 저장하여 후속 git-bash 창에서 읽을 수 있는 경우 다음과 같이 스크립팅할 수 있습니다.

새로운 git-bash가 시작될 때마다(즉, 스크립트 .bashrc또는 그에 상응하는 git-bash를 사용하여)

  • SSH 에이전트 환경 변수 파일이 있는지 확인하십시오.
  • 파일이 존재하는 경우:
    • 읽어
    • 파일에 나열된 에이전트 소켓(및 선택적으로 프로세스)이 여전히 존재하는 경우 현재 세션에서 변수를 있는 그대로 사용합니다.
  • 그렇지 않은 경우(즉, 파일이 없거나 해당 정보가 오래된 경우):
    • 달리다eval $(ssh-agent)
    • 새 SSH 에이전트 환경 변수 파일을 만듭니다.
  • 완료!

또한 SSH git URL을 전체 형식으로 입력해야 할 수도 있습니다. 즉, 그냥 대신 [email protected]/project.git다음과 같이 입력해야 합니다.

ssh://[email protected]/project.git

기술적으로 접두사가 없는 형식은 ssh://명령줄에 입력하는 것이 더 편리한 단축어일 뿐입니다.

관련 정보