source

Git에서 계속 암호를 묻는 메시지가 표시됩니다.

factcode 2023. 5. 9. 23:02
반응형

Git에서 계속 암호를 묻는 메시지가 표시됩니다.

나는 지금 Git를 한동안 사용하고 있지만, 계속해서 비밀번호를 요구하는 것이 나를 궁지에 몰아넣기 시작하고 있습니다.

저는 Mac OS X와 GitHub을 사용하고 있으며 GitHub의 Setup Git 페이지의 지시에 따라 Git와 SSH 키를 설정했습니다.

또한 GitHub의 SSH암호 페이지에서 언급한 바와 같이 GitHub SSH 키를 Mac OS X 키 체인에 추가했습니다.내 공용 키는 Git에 등록되어 있습니다.

그럼에도 불구하고 Git pull을 시도할 때마다 사용자 이름과 비밀번호를 입력해야 합니다.이를 위해 SSH 키 이외에 설정해야 하는 것이 있습니까?

당신이 Git 저장소 URL을 잘못 알고 있는 것 같습니다.

을 엽니다..git/config[원격 "https"] 섹션을 찾습니다.SSH를 사용하고 있는지 확인합니다.

ssh://git@github.com/username/repo.git

복제 또는 다운로드를 클릭하고 ssh를 선택하면 저장소의 기본 페이지에 SSH URL이 표시됩니다.

그리고 그것이 아닙니다.https또는git아래쪽:

https://github.com/username/repo.git
git://github.com/username/repo.git

이제 사용자 이름과 암호 대신 SSH 키만 사용하여 검증할 수 있습니다.

이 Git에게 ,'origin' has already been added.configurl = "..." 뒤에 [remote origin]~하듯이url = ssh://github/username/repo.git


다른 서비스도 마찬가지입니다.가 다음과합니다.protocol://something@url

.git/configAzure DevOps의 경우:

[remote "origin"]
    url = https://mystore@dev.azure.com/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

자격 증명을 구성하는 중입니다.조력자

OS X(현재 macOS)에서 터미널에서 다음을 실행합니다.

git config --global credential.helper osxkeychain

Git는 Keychain.app 파일을 사용하여 사용자 이름과 암호를 저장하고 키체인에서 개인 SSH 키의 암호를 검색할 수 있습니다.

Windows의 경우:

git config --global credential.helper wincred

Linux의 경우:

git config --global credential.helper cache // If you want to cache the credentials for some time (default 15 minutes)

OR

git config --global credential.helper store // if you want to store the credentials for ever (considered unsafe)

첫메모리에 두 방법은 증명을 합니다.~/.git-credentials평문 형식으로

Linux 방법에 대한 자세한 내용은 여기를 참조하십시오.
세 가지 모두에 대한 자세한 내용은 여기를 참조하십시오.

문제 해결

Git 자격 증명 도우미가 올바르게 구성된 경우 macOS는 암호 구문을 키 체인에 저장합니다.때때로 키 체인에 저장된 SSH와 암호 구문 간의 연결이 끊어질 수 있습니다.달려.ssh-add -K또는ssh-add ~/.ssh/id_rsa키 체인에 키를 다시 추가합니다.

macOS v10.12(Sierra)에서 ssh로 변경

의 경우 macOS v10.12(으)로 됩니다.ssh-add -K재부팅할 때마다 실행해야 합니다.이 문제를 방지하려면 다음을 작성합니다.~/.ssh/config이 내용으로.

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

ssh_config man.12 페이지 파일 22:

키 체인 사용

macOS에서 시스템이 특정 키를 사용하려고 할 때 사용자의 키 체인에서 암호 구문을 검색해야 하는지 여부를 지정합니다.사용자가 암호를 제공하는 경우 이 옵션은 암호가 올바른지 확인된 후 키 체인에 저장할지 여부도 지정합니다.인수는 '예' 또는 '아니오'여야 합니다.기본값은 '아니오'입니다.

애플은 무슨 일이 일어났는지 설명하는 테크노트 2449를 추가했습니다.

시에라 이전 , macOS 시에라ssh암호를 묻는 대화 상자를 표시하고 키 체인에 암호를 저장하는 옵션을 제공합니다.이 UI는 얼마 전에 더 이상 사용되지 않아 제거되었습니다.

macOS v10.12(시에라)로 업그레이드했을 때 이런 일이 있었습니다.업그레이드 시 SSH 에이전트가 삭제된 것 같습니다.

$ ssh-add -L
The agent has no identities.

실행할 수 있는 행ssh-add나의 기존 정체성을 찾아냈습니다.나는 비밀번호를 입력했고 다시 갈 수 있어서 좋았습니다.

다른 사용자가 말했듯이 암호 캐시 도우미를 설치할 수 있습니다.저는 주로 맥뿐만 아니라 다른 플랫폼에 대한 링크를 올리고 싶었습니다.Linux 서버를 실행하고 있는데 도움이 되었습니다. Git에서 GitHub 암호 캐싱

Mac의 경우:

git credential-osxkeychain

Windows:

git config --global credential.helper wincred

Linux:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

사용: github.com 을 적절한 호스트 이름으로 대체합니다.

git remote set-url origin git@github.com:user/repo.git

또한 암호를 묻는 사용자를 찾습니다.Git인가요, SSH 요원인가요?

저 같은 경우에는, 그럴 때마다git pull제게 묻더군요

Enter passphrase for key '/work/username/.ssh/id_rsa':

그래서 나는 Git이 암호를 요구하는 것이라고 추측했습니다.그래서 저는 계속 해결책을 찾았지만 나중에 SSH 에이전트가 종료되었다는 것을 깨달았습니다.다음을 사용하여 수정할 수 있습니다.eval $(ssh-agent)그리고.ssh-add여기에 제시된 바와 같이

▁to다에 추가할 수 있습니다.~/.bashrcSSH 에이전트가 로그인할 때 시작되도록 파일(또는 동등한 파일)을 지정합니다.

어쨌든 이것은 제가 저지른 꽤 어리석은 실수였지만, 만약 제가 그랬던 것처럼 누군가가 잘못된 나무를 짖는 것으로부터 시간을 절약하는 데 도움이 될 수도 있기 때문에 여기에 게시합니다.

# 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

git config credential.helper store

참고: 이렇게 하면 편리하지만 Git는 사용자의 자격 증명을 프로젝트 디렉터리 아래에 있는 로컬 파일(.git-credential)에 일반 텍스트로 저장합니다("홈" 디렉터리는 아래 참조).이 파일이 마음에 들지 않으면 이 파일을 삭제하고 캐시 옵션 사용으로 전환합니다.

Git가 원격 저장소에 연결해야 할 때마다 자격 증명을 계속 요청하도록 하려면 다음 명령을 실행할 수 있습니다.

git config --unset credential.helper

프로젝트 디렉터리가 아닌 %HOME% 디렉터리의 .git-credentials에 암호를 저장하려면 --global 플래그를 사용합니다.

git config --global credential.helper store

다음 명령을 사용하여 잠시 동안 암호를 다시 입력할 수 있도록 시간 초과 기간을 늘립니다.

git config --global credential.helper 'cache --timeout 3600'

비트버킷에 사용했고 깃허브는 둘 다 작동합니다.당신이 해야 할 일은3600초 단위입니다.원하는 정도로 늘립니다.을 다변했습니경으로 바꿨습니다.259200약 30일 정도입니다.이렇게 하면 약 30일마다 암호를 다시 입력합니다.

윈도우즈 for Git 1.7.9+의 경우 명령 프롬프트에서 다음 명령을 실행하여 텍스트 편집기에서 구성 파일을 엽니다.

git config --global --edit

그런 다음 파일에 다음 블록이 없으면 추가하거나 그에 따라 편집합니다.

[credential "https://giturl.com"]
username = <user id>
helper = wincred

파일을 저장하고 닫습니다.위에서 변경한 후에는 자격 증명을 한 번만 제공해야 합니다.

SSH를 사용하여 밀거나 당기기 위해 Git on Windows 및 GitHub에 대한 가이드: Git on Windows에 대한 일러스트레이션된 가이드

  1. PuTTY 다운로드 및 설치
  2. 환경 변수 'GIT_SSH' = 'path\to\plink'를 설정합니다.exe'(설치된 퍼티 폴더에 있음) - 매우 중요합니다.
  3. 환경 변수를 적용하려면 윈도우즈 탐색기 다시 시작(명령 프롬프트만 다시 시작할 수 없음)
  4. 퍼티겐을 실행합니다.exe: 새 를 생성하려면 공용 키를 GitHub 사이트에 복사합니다.
  5. 이 새 개인 키를 디스크의 안전한 위치에 저장합니다(Dropbox가 아닌 것이 좋습니다).
  6. 퍼티를 실행합니다.exe 및 SSH를 github.co 에 연결합니다.
  7. "shell:startup"을 실행하여 시작 폴더로 빠르게 이동합니다.
  8. 미인대회를 통해 Windows에서 개인 키를 시작합니다."path\to\pageant.exe" "path\to\privatekey" 구문을 사용하여 시작 폴더에 바로 가기 만들기
  9. 저장소의 .git/config 내에서 'puttykeyfile' 설정을 설정할 필요가 없습니다.
  10. 매우 중요한 것은 HTTPS가 아닌 GitHub의 "SSH 클론 URL"이 사용된다는 것입니다.

Git가 항상 GitHub 저장소의 로그인 자격 증명을 요청하지 않도록 하려면 쉽게 할 수 있습니다.

HTTPS 대신 SSH 사용

HTTPS 대신 SSH를 사용하여 오리진 원격 업데이트 가능"

git remote set-url origin git@github.com:username/your-repo.git

암호 및 사용자 이름을 저장하도록 Git 구성

Git가 사용자 이름과 암호를 저장하도록 하는 방법은 다음과 같습니다.

git config --global credential.helper store

그런 다음 세션의 사용자 이름과 암호를 저장합니다.

git config --global credential.helper cache

static_rtti가 제공하는 답변은 어떤 의미에서 해키한 것 같습니다.이전에 사용할 수 있었는지는 모르겠지만 Git 도구는 이제 자격 증명 스토리지를 제공합니다.

캐시 모드

$ git config --global credential.helper cache

캐시 모드를 사용하여 자격 증명을 특정 기간 동안 메모리에 보관합니다.암호는 디스크에 저장되지 않으며 15분 후에 캐시에서 제거됩니다.

저장 모드

$ git config --global credential.helper 'store --file ~/.my-credentials'

"저장" 모드를 사용하여 자격 증명을 디스크의 일반 텍스트 파일에 저장하면 자격 증명이 만료되지 않습니다.

저는 개인적으로 매장 모드를 사용했습니다.리포지토리를 삭제하고 복제한 다음 자격 증명을 한 번 입력해야 했습니다.

참조: 7.14 Git Tools - 인증 정보 스토리지

사용 중인 경우 Git에서 암호를 입력하라는 메시지를 표시합니다.https의전사용하는 경우ssh암호를 묻는 대신 개인 키를 사용하여 인증을 수행합니다.

이 문제를 해결하는 방법은 다음과 같습니다.

git remote -v

출발지 URL이 표시됩니다.그리고 당신은 알아차릴 것입니다.https이 URL에서. (여기 예)

이, 당, 먼, 을, 로의 URL을 추가하면 됩니다.ssh

git remote remove origin

git remote add origin git@github.com:PrestaShop/PrestaShop.git

GitHub과 상호 작용하려고 할 때마다 Git이 사용자 이름과 암호를 묻는 메시지를 표시하면 저장소에 HTTPS 복제 URL을 사용하고 있을 수 있습니다.

HTTPS 원격 URL을 사용하면 SSH보다 설정하기 쉽고 일반적으로 엄격한 방화벽 및 프록시를 통해 작동한다는 몇 가지 이점이 있습니다.그러나 리포지토리를 풀하거나 푸시할 때마다 GitHub 자격 증명을 입력하라는 메시지도 표시됩니다.

암호를 저장하도록 Git를 구성할 수 있습니다.Windows의 경우:

git config --global credential.helper wincred

WSL(Windows Subsystem for Linux)에서 작동하는 유일한 솔루션은 다음과 같습니다.

eval `ssh-agent`; ssh-add ~/.ssh/id_rsa

SSH 에이전트가 WSL에 제대로 등록되지 않아 문제가 발생했습니다.

문제를 해결하셨다고 생각합니다만, 저에게 도움이 되는 해결책이 보이지 않습니다. 여기 있습니다.

터미널 입력:

echo "" > ~/.ssh/known_hosts

▁your가 비게 됩니다.known_hosts파일을 사용하고 연결한 모든 호스트를 추가해야 하지만 문제가 해결되었습니다.

저도 같은 문제가 있었습니다.MacOS Mojave 키체인에서 암호문구를 계속 요청합니다.보안을 위해 id_rsa를 암호화해야 합니다. 키체인 그런다키체인추보가십오시해에음chain▁▁the▁it▁adding▁to에 추가해 보세요.ssh-add -K ~/.ssh/id_rsa

키가 ~/.ssh가 아닌 다른 폴더에 있는 경우 올바른 폴더로 대체합니다.

키체인은 이제 당신의 SSH 키를 알게 되었고, 바라건대, 모든 것이 지금 작동합니다.

여전히 문제에 직면해 있다면 시도해 보십시오.

1. brew install keychain

2. echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
   echo 'source $HOME/.keychain/$HOSTNAME-sh' ~/.bash_profile

3. ssh-add -K ~/.ssh/id_rsa

바라건대, 지금은 효과가 있어야 합니다.

업데이트: The-K플래그가 그 이후로 더 이상 사용되지 않습니다.대신 다음을 사용합니다.

ssh-add --apple-use-keychain ~/.ssh/id_ed25519 # path to private key

10를 실행하는 . macOS Cataline 10.15를 실행합니다.그리고 나는 사용하고 싶었습니다.https://것은 아니다.ssh

다음은 저에게 도움이 되었습니다.

git remote rm origin

git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git

이것은 GitLab에서도 작동해야 합니다.

메일 주소가 하여 해당 사용자 이름을 제거하십시오.@email그렇지 않으면 다음과 같은 오류가 발생할 것입니다.URL using bad/illegal format or missing URL.

이것이 도움이 되길 바랍니다!

당신의 터미널에서 Git와 함께 키 체인을 사용하는 것에 대한 orkoden의 답변은 불완전했고 오류를 제기합니다.터미널에 입력한 사용자 이름과 암호를 키 체인에 저장하려면 다음 작업을 수행해야 합니다.

curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain

입력합니다.

git config --global credential.helper osxkeychain

만약 당신이 컬 작업 전에 Git 구성으로 부품을 이미 수행했다면 문제가 없습니다. 작동할 것입니다.

static_rtti가 위에서 말한 것처럼,

https://github.com/username/repo.git
git://github.com/username/repo.git

로.

ssh://git@github.com/username/repo.git

제가 직접 바꿨습니다.https에서 .git/config 파일로 합니다.ssh하지만 여전히 작동하지 않았습니다.그리고 난 당신이 변해야 한다는 것을 보았습니다.github.comgit@github.com실제 올바른 URL을 확인하는 좋은 방법은 프로젝트 페이지로 이동하여 다음을 클릭하는 것입니다.

올바른 URL을 가져오려면 HTTPS를 SSH로 변경합니다.

그런 다음 이 URL을 구성 파일에 추가합니다.

저는 "codehugger"에 동의하며 "orkoden"의 지침을 사용하여 NetBeans 7.3에서 파일을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴를 선택할 때 - 'push to remote' 창이 열렸을 때 - 여기에는 두 가지 옵션이 있습니다.

  1. origin:https://github.com/myaccount/myproject.git/

  2. https://github.com/myaccount/myproject.git/

보시는 것처럼 URL의 오리진 매개 변수가 차이입니다. 이 옵션(1)을 선택하고 싶지 않은 경우(2) 옵션을 선택하면 됩니다.

구성에 따라 다른 종류의 인증이 있습니다.다음은 몇 가지입니다.

  1. git credential-osxkeychain.

    자격 증명이 올바르지 않으면 다음 방법으로 자격 증명을 제거합니다.

      git credential-osxkeychain erase
    

    또는:

      printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
    

    그래서 Git는 당신에게 다시는 키체인 허가를 요청하지 않을 것입니다.그런 다음 다시 구성합니다.

    참조: GitHub에서 OS X 키체인의 자격 증명 업데이트

  2. SSH RSA 키입니다.

    하여 " 키"를 . 확인 방법:ssh-add -L/ssh-add -l당신이 올바른 신분을 사용하고 있다면요.

  3. )httpsssh의전).

    사용하다~/.netrc(%HOME%/_netrc예를 들어, 자격 증명을 제공합니다.

      machine stash1.mycompany.com
      login myusername
      password mypassword
    

자세히 알아보기:스택 오버플로에서 GitHub과 동기화하는 중입니다.

GitHub에서 키를 사용하려면 먼저 자습서 "SSH 연결 테스트:

$ ssh -T git@github.com
# Attempts to ssh to GitHub

Windows를 사용하고 있는데 GitHub에서 갑자기 이러한 일이 발생하기 시작했다면, 이는 GitHub이 최근 2018-02-22에 사용되지 않는 암호화 알고리즘에 대한 지원을 비활성화했기 때문일 것입니다.이 경우 솔루션은 단순히 전체 Git for Windows 또는 Git Credential Manager의 최신 버전을 다운로드하여 설치하는 것입니다.

SSH 를 SSH에 .~/.gitconfig:GitHub HTTPS는 GitHub의 SSH입니다.

[url "ssh://git@github.com/"]
    insteadOf = git://github.com/
    insteadOf = https://github.com/

공용 저장소를 주로 사용하는 경우에는pushInsteadOfinsteadOf인증 없이 공개 보고서에서 읽을 수 있기 때문에).

1단계: 현재 구성 확인

cat .git/config

다음을 얻을 수 있습니다.

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/path_to_your_git.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[user]
    name = your_username
    email = your_email
[branch "master-staging"]
    remote = origin
    merge = refs/heads/master-staging

2단계: 원격 오리진 제거

git remote rm origin

3단계: 사용자 이름과 암호로 원격 오리진을 다시 추가합니다.

git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git

마이크로소프트 스택 솔루션(윈도우즈 및 Azure DevOps)

먼를엽다니를 ..git/config가 다음과:

protocol://something@url

예: Azure DevOps용 .git/config:

[remote "origin"]
    url = https://mystore@dev.azure.com/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

문제가 계속되면 Windows 자격 증명 관리자를 열고 Windows 자격 증명이라는 안전 상자를 클릭한 다음 Git 관련 자격 증명을 모두 제거합니다.

이제 다음 번에 git에 로그인하면 더 이상 사라지지 않습니다.

저는 이 문제가 있었습니다.레포는 제게 매번 자격 증명을 입력하라고 요구했습니다.다른 모든 저장소에서 자격 증명을 요청하지 않았습니다.심지어 같은 계정 자격 증명으로 HTTPS를 사용하여 GitLab을 추적하도록 설정되어 있었는데, 한 개를 제외하고 모두 정상적으로 작동하는 것이 이상했습니다.

.git/config 파일을 비교해 보니 문제의 원인이 되는 URL에 두 가지 주요 차이점이 있었습니다.

자격 증명을 요청합니까?

https://gitlab.com/myaccount/myproject

자격 증명을 요청하지 않음:

https://myaccount@gitlab.com/myaccount/myproject.git 

그래서 "myaccount@"와 ".git"를 추가함으로써 제 경우 문제가 해결되었습니다.

저의 경우 아래와 같은 URL을 선택하려고 할 때 항상 암호 프롬프트가 표시됩니다.

git fetch http://username@gerrit-domainname/repositoryname refs/changes/1/12345/1 && git cherry-pick FETCH_HEAD

이 URL은 Cherry가 다른 기계에서 선택했을 때 잘 작동했습니다.하지만 가 올바른 비밀번호로 체리픽을 하려고 할 때 abc@12345아래 오류가 발생하곤 했습니다.

remote: Unauthorized
remote: Authentication failed for http://username@gerrit-domainname  

git 구성 파일의 원격 URL은 다음과 같습니다.

url = ssh://gerrit-domainname:8080/wnc

솔루션:
나는 인증 실패 문제를 내가 찾은 HTTP 비밀번호를 제공함으로써 해결했습니다.
내게리트 계정 -> 설정 -> HTTP 비밀번호

와 같은 것이었습니다.Th+IsAduMMy+PaSS+WordT+RY+Your+OwNPaSs내 실제 비밀번호와 매우 달랐던 것.abc@12345

참고: Cherpick에 대한 내 URL은 다음으로 시작합니다.git fetch ...이 checkout이 " 서라이이솔 URL"로 checkout/download에서 할 수 .git fetch ...

같은 종류의 문제에 직면했습니다.

원격 오리진을 올바르게 설정했는지 확인하십시오.

$git remote add origin master "https://...git " 

언급URL : https://stackoverflow.com/questions/7773181/git-keeps-prompting-me-for-a-password

반응형