힘내 계속 내 ssh 키 암호 문구를 요구


538

github 튜토리얼에서 지시 한대로 키를 만들고 github에 등록하고 ssh-agent를 명시 적으로 사용하려고 시도했지만 git은 당기거나 밀 때마다 암호 문구를 계속 묻습니다.

원인이 무엇입니까?


답변:


1039

SSH 에이전트를 시작한 후 다음을 수행하십시오.

eval $(ssh-agent)
  1. 개인 키를 추가해야합니다.

    ssh-add
    

    암호문을 한 번만 요청하면 공개 키를 Github에 업로드 한 경우 푸시를 허용해야합니다.

  2. macOS에서 키를 영구적으로 저장하려면 :

    ssh-add -K  
    

    사용자의 키 체인에 저장하여 닫았다가 다시 연 후에도 유지됩니다.


16
서버에서 로그 아웃하고 ssh back in을 실행 한 다음 git pull비밀번호를 다시 묻습니다.
cyber8200

35
ssh-add -K사용자의 키 체인에 저장하여 닫았다가 다시 연 후에도 유지됩니다.
Kirk

72
@Kirk ssh-add -K는 다음을 제공합니다.unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
Sandeep C

13
그럼에도 불구하고 여전히 암호 문구를 입력하라는 메시지가 나타납니다.
IgorGanapolsky

21
-K사과 전용입니다. help.github.com/articles/…
bkdir

238

OS X El Capitan (10.11)에서 macOS Sierra (10.12)로 업그레이드 한 후 다시 시작한 후에이 문제가 발생했습니다. ssh-add솔루션은 일시적 일 수 있지만 다른 재시작 지속되지 것입니다.

영구적 인 솔루션은 옵션을 편집 (또는 작성) ~/.ssh/config하고 활성화하는 UseKeychain것입니다.

Host *
    UseKeychain yes

관련 : macOS는 Sierra로 업데이트 한 후 ssh 암호 문구를 계속 묻습니다.


1
나를 위해 고마워 ... 내가 한 ... ssh-add -K /Users/***/.ssh/git/id_rsa하지만 터미널을 다시 시작한 후에도 여전히 작동하지 않습니다 ... 감사합니다.
nawlbergs

2
왜 이런 일이 일어나고 싶습니까? OpenSSH 변경에 대한 기술 노트를 읽어보십시오. developer.apple.com/library/content/technotes/tn2449/…
samwize

62

시도했지만 ssh-add여전히 암호를 입력하라는 메시지가 표시되면를 사용해보십시오 ssh-add -K. 이것은 암호문을 키 체인에 추가합니다.

업데이트 : macOS Sierra를 사용하는 경우 위의 작업이 더 이상 작동하지 않을 수 있으므로 다른 단계를 수행해야 할 수도 있습니다. 에 다음을 추가하십시오 ~/.ssh/config.

Host *
  UseKeychain yes

2
여전히 암호 문구를 입력하라는 메시지가 표시됩니다.
IgorGanapolsky

@IgorGanapolsky macOS Sierra를 사용하고 있습니까? 그렇다면 방금 답변에 추가 한 내용을 확인하십시오. 도움이 되길 바랍니다.
Darryl Young

2
예, 저는 시에라에 있습니다. 그러나 다음은 나를 위해 일한 라인입니다. AddKeysToAgent yes
IgorGanapolsky

1
BitBucket Cloud에서도 작동합니다. GitKraken에서 문제가 발생하여 문제가 해결되었습니다.
말라기

54

나는 다음을 시도 할 것이다 :

  1. GitBash 시작
  2. ~/.bashrc파일 편집
  3. 파일에 다음 줄을 추가하십시오

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  1. 파일을 저장하고 닫습니다
  2. GitBash 닫기
  3. GitBash 다시 열기
  4. 암호를 입력하십시오

4
나중에 참조 할 수 있도록이 기능도 작동합니다 zsh. 그냥이 추가.zshrc
아르

2
나는 이것이 당신의 키 파일이라고 가정합니다 id_rsa. 사용자 정의 이름이 있으면 eg를 사용해야합니다. /usr/bin/ssh-add ~/.ssh/custom_filename
Juha Untinen

2
이 스크립트가 어떻게되는지 설명해 주실 수 있습니까?
LeeR

2
@Lee 아직 실행 중이 아닌 경우 ssh-agent를 시작하므로 매번 푸시 할 때마다 ssh 암호 문구를 묻지 않습니다.
Roland

이것은 단지 ssh-agent를 실행하고 모든 로그인에 키를 추가합니다. 로그인 할 때마다 비밀번호를 입력해야합니다. 예를 들어 스크립트를 ssh-ing하고 GIT 명령을 수행하는 경우 불행히도 전혀 유용하지 않습니다.
trainoasis



6

비슷한 문제가 있었지만 다른 답변으로도 문제가 해결되지 않았습니다. 다른 사람이 나와 같은 고정 설정을 한 경우를 대비하여 게시하고 게시하겠다고 생각했습니다.

여러 키가 있었고 Git이 먼저 잘못된 키를 사용하고있는 것으로 나타났습니다. 암호 문구를 입력하라는 메시지가 표시되면 암호를 입력 한 다음 Git이 작동하는 다른 키를 사용합니다 (암호를 입력하지 않아도 됨).

방금 암호 문구를 묻는 메시지를 표시하는 데 사용했던 키를 삭제했습니다.


5

SSH-Agent 자체에 문제가있는 것 같습니다. 문제를 해결하려고합니다.

1) SSH에 키를 추가하기 위해 ssh-add를 했습니까?

2) 사용 중에 터미널 창을 닫고 있습니까? 창을 닫으면 다시 열 때 암호를 다시 입력해야하기 때문입니다.


2
첫 번째 문제인 Jeff Welling을 해결하는 방법에 대한 정보를 추가하면 좋을 것입니다.
ranu

5

위의 솔루션이 저에게 효과적이지 않은 경우 확인해야 할 한 가지는 실제로 공개 키도 있습니다 (일반적으로 id_rsa.pub). 그렇지 않은 것은 드문 일이지만 그것이 저의 원인이었습니다.

개인 키에서 공개 키를 만들려면

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

1

다른 솔루션을 시도하지만 도움이되지 않습니다. 그러나 Bitbucket.com seams 의이 단계 ( GitBash SSH 환경은 항상 암호 문구를 묻습니다. 어떻게해야합니까? )

아이디어는 다음과 같습니다.

  1. 당신은 ~/.bashrc파일 을 만듭니다

  2. 팔로우 스크립트 추가 :

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
        function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
        echo succeeded
        chmod 600 "${SSH_ENV}"
        . "${SSH_ENV}" > /dev/null
        /usr/bin/ssh-add
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
    
  3. 배쉬를 다시 실행


1

위에서 언급하지 않은 또 다른 가능한 해결책은 다음 명령으로 리모컨을 확인하는 것입니다.

git remote -v

원격이 git으로 시작하지 않고 https로 시작하는 경우 아래 예에 따라 git로 변경하려고 할 수 있습니다.

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.