Git에서 SSH 키에 대한 암호를 묻는 메시지를 표시하지 않도록 하는 방법은 무엇입니까?

Git에서 SSH 키에 대한 암호를 묻는 메시지를 표시하지 않도록 하는 방법은 무엇입니까?

나는 git bash를 사용하고 있으며 ssh-keygen을 사용하여 ssh 키를 설정하고 repo git으로 작업을 수행할 때마다 /c/Users/jankiewj/.ssh/id_rsa. 해당 암호를 비활성화하는 방법이 있습니까?

편집하다: 방금 업무용 노트북에 Ubuntu를 새로 설치한 이후로 원래 제목을 편집(Windows 제거)했는데 ssh 키에 암호 문구가 있으면 항상 암호를 요청하며 이 문제를 해결하는 솔루션은 동일합니다. 이는 Unix인 MacOSX에서도 동일하게 작동하며 동일한 기본 도구를 사용합니다.

답변1

git bash, Windows WLS 또는 실제 GNU/Linux의 bash에서 실행할 수 있습니다.

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

두 번째 명령에서 암호문을 요구할 것입니다. 그게 전부입니다. 수행해야 하는 각 추가 작업(한 번 암호문이 필요함)에서는 암호문을 묻지 않습니다(아래 스크린샷의 예 참조).

Windows의 git bash에 암호 문구 추가

답변2

조금 더 좋고영구적인 해결책Windows에서 git bash를 열 때 ssh-agent를 자동으로 시작하는 것입니다. .profile 또는 .bashrc에 아래 내용을 복사하여 붙여 넣을 수 있습니다. 위에 올려두는 걸 더 좋아하는데.프로필

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

이 솔루션을 사용했습니다.이 github 도움말 기사에서

답변3

TDLR: Windows 사용자의 경우,

  • 달리다ssh-add "C:\\Users\\<your user>/.ssh/id_rsa"
  • ~ 아니다ssh-add ~/.ssh/id_rsa

예를 들어 나는 항상 다음을 봅니다.

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/User/.ssh/id_rsa: 
Identity added: /c/Users/User/.ssh/id_rsa (/c/Users/User/.ssh/id_rsa)

$ git pull
Enter passphrase for key 'C:\Users\User/.ssh/id_rsa': 

일관되지 않은 경로 구분 기호에 유의하세요. ssh-agent는 Unix 경로 구분 기호를 사용하여 ~를 변환하지만 git은 대신 Windows 경로 구분 기호를 사용합니다. 파일 의 경로가 id_rsa키로 사용된다는 점을 고려하면 캐시가 누락된 이유가 설명됩니다.

  • 또 다른 차이점 C://c/
  • 관련 설명: git이 암호 문구를 요청하면 해당 암호는 캐시되지 않으므로 해당 암호를 계속 입력할 수 있습니다. only 에 문구를 전달해 보세요 ssh-add.
  • Windows에서는 ~"다중값"이라고 가정하므로 명시적으로 설명하는 것이 가장 좋습니다.
  • ssh-add와 같은 기본 위치를 살펴봅니다 ~/.ssh/id_rsa. Windows에서는 이것이 모호하다고 가정합니다. 기본 경로를 사용하는 대신 명시적으로 형식이 지정된 경로를 명시적으로 전달합니다.
    • ssh-add "C:\\Users\\<your user>/.ssh/id_rsa", 즉 @velval의 답변에도 있습니다.

답변4

열쇠고리이 작업을 지능적으로 수행하는 프로그램입니다.

.bashrc(또는 이에 상응하는 파일)에서 실행해야 하며 로드해야 하는 키 이외의 구성은 환경을 올바르게 설정하지 않습니다.

내가 사용하는 것은 다음과 같습니다.keychain --quiet key1.pem key2.pem

쉘이 Zsh라는 것을 인식하고 Bash를 사용할 때와 정확히 동일하게 작동했습니다.

관련 정보