prosource

Git이 자꾸 내 ssh 키 패스프레이즈를 묻는다.

probook 2023. 4. 13. 20:56
반응형

Git이 자꾸 내 ssh 키 패스프레이즈를 묻는다.

github 튜토리얼의 지시에 따라 키를 만들고 github에 등록하고 ssh-agent를 명시적으로 사용해 보았습니다만, git는 풀이나 푸시를 시도할 때마다 패스프레이즈를 계속 요구합니다.

원인이 뭘까요?

SSH 에이전트를 시작하면 다음 작업을 수행합니다.

eval $(ssh-agent)

다음 중 하나를 수행합니다.

  1. 개인 키를 추가하려면:

     ssh-add
    

    그러면 패스프레이즈를 한 번만 물어보고 공개키를 Github에 업로드한 경우 푸시할 수 있습니다.

  2. MacOS에서 키를 영구적으로 추가하고 저장하려면:

     ssh-add -K  
    

    닫았다가 다시 열어도 사용자의 키 체인에 저장하여 지속됩니다.

    에 대한 deprecated 변종 flags, ,,,,::,,, 、 로 flags 、 flags flags flags flags flags 。

     ssh-add --apple-use-keychain 
    
  3. 키를 Ubuntu(또는 동등한 것)에 영구히 추가하고 저장하려면:

      ssh-add ~/.ssh/id_rsa
    

OS X El Capitan (10.11) MacOS Sierra (10.12) 입니다.ssh-add솔루션은 일시적으로 동작했지만 다시 시작할 때까지 지속되지 않습니다.

은 편집 작성)하는 이었습니다.~/.ssh/config하게 합니다.UseKeychain★★★★★★ 。

Host *
    UseKeychain yes

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

ssh-add 패스프레이즈를 .ssh-add -K이치노

업데이트: MacOS Sierra를 사용하는 경우 위의 작업이 더 이상 작동하지 않을 수 있으므로 다른 단계를 수행해야 합니다., 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다.~/.ssh/config:

Host *
  UseKeychain yes

다음을 시도합니다.

  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. 패스프레이즈를 입력해 주세요.

Windows 에서는 다음과 같이 동작했습니다(Repo 1st에서 코드를 복제했습니다).

eval $(ssh-agent)
ssh-add 
git pull 

그때 마지막으로 패스프레이즈를 물어봤어요

크레딧: 솔루션은 https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket에서 취득한 것입니다.

~/.ssh/config에 추가해 보십시오.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

...개인 키의 이름이 id_interval이라고 가정합니다.

다음을 실행합니다.

eval $(ssh-agent) && ssh-add ~/.ssh/id_rsa &>/dev/null

암호를 입력한 다음 git을 선택하십시오.Git은 이 명령어 뒤에 패스프레이즈를 묻지 않습니다.

원본 출처: https://gist.github.com/egoens/c3aa494fc246bb4828e517407d56718d

이전에는 K 플래그를 사용하여 키를 추가했지만 지금은 다음과 같습니다.

ssh-add --apple-use-keychain

K 플래그와 -A 플래그는 폐지되어 각각 --apple-use-keychain 플래그와 --apple-load-keychain 플래그로 대체되었습니다.


나중에 편집: 추가가 필요할 수 있습니다.ssh-add --apple-load-keychain -qyour .bash_profile ★★★★★★★★★★★★★★★★★」.bashrc ★★★★★★★★★★★★★★★★★」.zshrc또는 이에 상당합니다.

GitBash를 사용하지 않고 Windows에 있는 경우 - 이 명령을 사용하여 ssh-agent를 시작해야 합니다.

start-ssh-agent.cmd

ssh 에이전트가 설정되어 있지 않은 경우 PowerShell을 admin으로 열고 수동 모드로 설정할 수 있습니다.

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

방법이에게 효과가 , 한 할 점은 키(일반적으로 공개 키)도입니다.id_rsa.pub그렇게 하지 않는 것은 드문 일이지만, 그것이 나의 원인이었다.

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

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

저도 비슷한 문제가 있었지만 다른 답변으로는 문제가 해결되지 않았습니다.나처럼 엉터리 장치를 가진 사람이 있을지 모르니까 이 글을 올리려고 했어요.

알고 보니 제가 여러 개의 키를 가지고 있었는데 Git이 처음에 잘못된 키를 사용하고 있었습니다.패스프레이즈를 입력하도록 요구받습니다.그러면 Git은 (패스프레이즈를 입력할 필요가 없는) 다른 키를 사용합니다.

패스프레이즈를 입력하기 위해 사용하던 키를 삭제해 버렸습니다.

SSH-Agent 자체에 문제가 있는 것 같습니다.저는 그것을 트러블 슈팅해 보겠습니다.

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

2) 창을 닫으면 다시 열 때 패스워드를 다시 입력해야 하기 때문에 사용 간격마다 단말기 창을 닫습니까?

Windows 또는 Linux 사용자에게는 GitHub Docs에 가능한 솔루션이 설명되어 있으며, 고객님의 편의를 위해 아래에 보고합니다.

ssh-agent shellbash Git을 됩니다.해서 '붙여넣다음에 .~/.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

가 기본 중예: " " )에되어 있지 않은 :~/.ssh/id_rsaSSH를 사용합니다.하려면 ssh-agent를 합니다.ssh-add ~/path/to/my_key.

Git Bash를 처음 실행하면 패스프레이즈를 입력하도록 요구됩니다.로그아웃하거나 컴퓨터를 종료하거나 프로세스를 종료할 때까지 프로세스는 계속 실행됩니다.

Windows 10 의 경우:

저도 같은 문제가 있었어요.(기존에는 다른 문제로 인해 여기서 스크립트로 ssh-agent를 개별적으로 업데이트해야 했습니다.)

Git은 내 ssh 구성에 액세스했지만(ssh 구성에서 nonsense-line이 있을 때 git pull 예외가 발생했지만) ssh-agent를 통해 추가하고 설정에서 참조한 개인 키는 전혀 신경 쓰지 않는 것 같습니다.

PowerShell에서 다음 명령을 실행하면 문제가 해결되었습니다.

git config core.sshCommand (get-command ssh).Source.Replace('\','/')

(자세한 내용은 이 링크에 있습니다.)

위에 언급되지 않은 다른 해결 방법은 다음 명령을 사용하여 리모컨을 확인하는 것입니다.

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

다른 해결책을 시도해 봤지만 아무 도움도 되지 않았다.단, Bitbucket.com의 다음 절차(내 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. 배쉬를 재방송하다

mac에서는 ssh 키가 매번 패스프레이즈를 필요로 하는데 패스프레이즈를 건너뛰고 싶다면 아래를 시도해보세요.

  1. eval "$(valuate-agent -s)"
  2. ssh-add - K . ssh / id _ rsa
  3. 이 기본 ssh 구성을 추가합니다.

호스트*
AddKeysToAgent ○
UseKeychain ○
신원~/.ssh/id_rsa 파일

HTTPS 대신 SSH를 사용하여 오리진리모트의 URL을 업데이트합니다.

git remote set-url origin "SSH URL COPIED FROM GIT REPO."

이게 나한테 맞는 거야.

만약 당신이 생선을 사용하고 있다면, 그것에 대한 요지가 있다.

# config.fish
if not pgrep -f ssh-agent > /dev/null
  eval (ssh-agent -c)
  set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
  set -Ux SSH_AGENT_PID $SSH_AGENT_PID
  set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
end

로컬 레포는 ssh 키로 갱신되지 않은 것 같습니다.최소한 https에서 ssh로 이행할 때는 이렇게 되었습니다.

리모트 리셋은 해봤어요?

git remote set-url origin <ssh url>

이 문제를 해결하는 가장 안전한 방법은 아닐 수 있지만 단순히 암호를 설정하지 마십시오. 옵션입니다.패스프레이즈를 설정하지 않으면 패스프레이즈는 요구되지 않습니다.패스프레이즈를 변경할 수 있습니다.

$ ssh-keygen -p -f ~/.ssh/id_ed25519
> Enter old passphrase: [Type old passphrase]
> Key has comment 'your_email@example.com'
> Enter new passphrase (empty for no passphrase): [Type new passphrase]
> Enter same passphrase again: [Repeat the new passphrase]
> Your identification has been saved with the new passphrase.

뭔가 다른 것이 필요한 사람이 있으면 가르쳐 주세요.https://stackoverflow.com/a/6445525/11891580

내게는 재기동할 때마다 뛰어야 해ssh-add --apple-use-keychaincredential을 로드하기 위해 이 명령어를 스택오버플로 응답에 추가해 고정했습니다.

패스프레이즈를 건너뛰는 경우는 패스프레이즈를 사용하지 않고 키를 작성할 수 있습니다.) 단, 패스프레이즈를 사용하지 않는 경우 ssh-agent를 사용하고 있는 Windows의 경우 개인 키를 추가하여 .ssh 폴더에서 삭제할 수 있습니다.ssh-agent 설정 방법:

# Check the current status of ssh-agent:
Get-Service | ?{$_.Name -like '*ssh-agent*'} | select -Property Name, StartType, Status

# Start the Service:
Start-Service ssh-agent

# Add your key as before:
ssh-add <path to the key>

는 ssh-agent로 합니다.C:\Windows\System32\OpenSSH\ssh.exe따라서 환경변수를 생성하여 git용으로 ssh.exe를 셋업할 수 있습니다.

GIT_SSH: C:\Windows\System32\OpenSSH\ssh.exe

이것은 Git과 Bash에서 동작합니다.

또한 Tortoise Git: Settings > 에 이 경로를 설정할 수도 있습니다.네트워크>SSH > SSH 클라이언트

언급URL : https://stackoverflow.com/questions/10032461/git-keeps-asking-me-for-my-ssh-key-passphrase

반응형