programing

github private repo에 대한 '터미널 프롬프트 사용 안 함' 오류로 결과를 가져오십시오.

randomtip 2023. 5. 21. 17:37
반응형

github private repo에 대한 '터미널 프롬프트 사용 안 함' 오류로 결과를 가져오십시오.

브라우저에서 Github UI를 사용하여 개인 repo 예제 사이트/myprivate repo를 만들었습니다.

그런 다음 데스크톱에 있는 내 go 디렉토리로 이동하여 다음과 같이 복제했습니다.

$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo

지금까지는 좋습니다.scheduler.go 파일을 만들고 repo에 추가한 다음 push했습니다.

$ vim scheduler.go
$ git add scheduler.go
$ git commit
$ git push

다 괜찮아요.하지만 깨끗한 노트북으로 가서 레포를 복제하려고 했을 때 다음과 같은 오류가 발생했습니다.

# Now on laptop, which doesn't yet know about the repo
$ cd $GOPATH
$ go get github.com/examplesite/myprivaterepo
# At this point it should ask for my user ID and password ,right? But it doesn't.
# Instead, this error occurs:
cd .; git clone https://github.com/examplesite/myprivaterepo /Users/tom/go/src/github.com/examplesite/myprivaterepo
Cloning into '/Users/tom/go/src/github.com/examplesite/myprivaterepo'...
fatal: could not read Username for 'https://github.com': terminal prompts disabled
package github.com/examplesite/myprivaterepo: exit status 128

왜 내 노트북이 나만의 레포를 싫어하며 어떻게 하면 노트북이 그 운명을 받아들이도록 할 수 있습니까?감사해요.

저는 이것이 매우 도움이 된다는 것을 알았고, 그것이 제 문제를 해결했습니다.이 명령을 사용하면 2FA가 수행할 수 있습니다(사용자 이름과 암호를 입력하는 수고를 덜 수 있습니다).

Github의 경우:

git config --global --add url."git@github.com:".insteadOf "https://github.com/"

Gitlab의 경우:

git config --global --add url."git@gitlab.com:".insteadOf "https://gitlab.com/"

출처: http://albertech.blogspot.com/2016/11/fix-git-error-could-not-read-username.html

만약 당신이 2FA를 사용하지 않는다면, 당신은 여전히 SSH를 사용할 수 있고 이것은 작동할 것입니다.

으로 결로 초된래과▁resulting.gitconfig다음과 같습니다.

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

get으로 이동하면 기본적으로 "터미널 프롬프트"가 비활성화됩니다.git의 환경 변수를 설정하여 변경할 수 있습니다.

env GIT_TERMINAL_PROMPT=1 go get github.com/examplesite/myprivaterepo

사용해야 하기 때문에 불만입니다.sshhttpsGit여로전 https 성있습니다어구되하. 한 다른 해야 합니다.sshhttps다음을 실행하여 이를 수행하는 간단한 방법:

git config --global --add url."git@github.com:".insteadOf "https://github.com/"

또이미중경우인용사는을 .ssh와 함께git당신의 기계에서, 당신은 안전하게 편집할 수 있습니다.~/.gitconfig 맨 하세요.

참고: 여기에는 사용자가 정확히 무엇을 사용하는지에 따라 달라지는 모든 SVC, 소스 버전 제어(github, gitlab, bitbucket)가 포함됩니다.

# Enforce SSH
[url "ssh://git@github.com/"]
  insteadOf = https://github.com/
[url "ssh://git@gitlab.com/"]
        insteadOf = https://gitlab.com/
[url "ssh://git@bitbucket.org/"]
  insteadOf = https://bitbucket.org/
  • 암호 프롬프트를 사용하지 않으려면 암호를 캐시해야 합니다.Mac, Windows 또는 Linux에서 Github 암호를 캐시하는 방법에 대한 자세한 내용은 이 페이지를 참조하십시오.

  • github 계정에 ssh를 추가하는 방법에 대한 자세한 내용은 이 페이지를 방문하십시오.

또한 더 중요한 것은 이것이 회사나 사용자 자신을 위한 개인 저장소인 경우 이러한 저장소에 대한 프록시 또는 체크섬 데이터베이스 사용을 건너뛰어 공개적으로 노출되지 않도록 해야 한다는 것입니다.

이를위설야합니다해정해▁▁to를 설정해야 .GOPRIVATEgo 명령이 비공개로 간주하는 모듈(공개적으로 사용할 수 없음)을 제어하는 환경 변수이므로 프록시 또는 체크섬 데이터베이스를 사용해서는 안 됩니다.

path.Match의 모듈 경로 접두사입니다.를 들면 를들면예,

export GOPRIVATE=*.corp.example.com,github.com/mycompany/*

또는

go env -w GOPRIVATE=github.com/mycompany/*
  • 개인 패키지/모듈 체크섬 유효성 검사 문제를 해결하는 방법에 대한 자세한 내용은 이 문서를 참조하십시오.
  • Go 13 모듈 및 새로운 기능 향상에 대한 자세한 내용은 Go 1.13 모듈 릴리스 노트를 참조하십시오.

잊지 말아야 할 마지막 한 가지 언급은, 여전히 구성할 수 있다는 것입니다.go get인증하고 넘겨주다https 할 을 당이해할다것다입니추줄는가하에 입니다.$HOME/.netrc

machine github.com login USERNAME password APIKEY
  • GitHub 계정의 경우 암호는 개인 액세스 토큰일 수 있습니다.
  • 방법에 대한 자세한 내용은 이동 FAQ 페이지를 참조하십시오.

더 많은 지원이나 도움이 필요한 경우 언제든지 댓글을 남겨주시기 바랍니다.

첫 번째 --go get명령줄에서 인증을 거부합니다.따라서 자격 증명을 캐시해야 합니다.나는 osx를 사용하기 때문에 osxkeychain 자격 증명 도우미를 사용할 수 있습니다.

두 번째는 2FA가 활성화되어 있어 암호를 사용하여 인증할 수 없습니다.대신 비밀번호 대신 사용할 개인 액세스 토큰을 생성해야 했습니다.

  1. setup osxkeychain 자격 증명 도우미 https://help.github.com/articles/caching-your-github-password-in-git/
  2. 암호를 사용하는 대신 TFA를 사용하는 경우 reposcope https://github.com/settings/tokens 를 사용하여 개인 액세스 토큰을 생성합니다.
  3. private git를 합니다.git clone https://github.com/user/private_repo그리고 사용자 이름에는 github.com 사용자 이름을 사용하고 암호에는 생성된 개인 액세스 토큰을 사용했습니다.
  4. 방금 복제된 repo를 제거하고 다시 테스트하여 자격 증명이 캐시되었는지 확인했습니다.git clone https://github.com/user/private_repo그리고 이번에는 신용을 요구받지 않았습니다.

    1. go get은 개인 액세스 토큰이 액세스할 수 있는 모든 리포지토리에서 작동합니다.권한에 따라 다른 계정/토큰으로 단계를 반복해야 할 수도 있습니다.

1.13 이후로, 만약 당신이 이미 Git 자격 증명으로 당신의 터미널을 구성했지만 여전히 이 문제에 직면했다면, 당신은 다음을 설정할 수 있습니다.GOPRIVATE환경 변수입니다.이 환경 변수를 설정하여 이 문제를 해결했습니다.

export GOPRIVATE=github.com/{organizationName/userName of the package}/*  

네가 원한다면,go get일을 빨리 하고, 일을 따라가는 것...

그냥 내보내기GIT_TERMINAL_PROMPT=1

$ export GIT_TERMINAL_PROMPT=1
$ go get [whatever]

이제 나머지 셸 세션에 대한 사용자/패스를 입력하라는 메시지가 표시됩니다.이것을 당신의 안에 넣으세요..profile또는 설정git보다 영구적인 해결을 위해 위와 같이.

bash_profile을 추가합니다.

export GOPRIVATE=github.com/your-organization/*

그런 다음 실행:

git config --global --add url."git@github.com:".insteadOf "https://github.com/"

GitHub에 SSH 인증을 사용하는 것과 관련하여 많은 답변이 있지만, 문제는 바둑 모듈의 올바른 사용과 관련된 것입니다.이를 위해 루나 러브굿은 여기서 정답을 제공합니다.

반복하지만 기본적으로 Go는 패키지를 다운로드하기 위해 공용 저장소를 사용하려고 합니다.개인 저장소에 SSH를 사용하여 인증하도록 지정해야 합니다.이를 위해 다음을 사용할 수 있습니다.

go env -w GOPRIVATE=github.com/{your-username}/{your-lib}
.
.
go mod vendor     # this will now work for your private lib

Glob 패턴도 작동하므로 개인 리포지토리가 여러 개인 경우 추가할 수 있습니다.

go env -w GOPRIVATE=github.com/{your-username}/*

편집: 올바른 표현.

이 옵션을 사용하여 Gitconfig를 구성하면 나중에 GitHub의 다른 저장소를 복제하는 데 문제가 발생합니다.

git config --global --add url. "Git@github.com". Instead, "https://github.com/"

대신 이 옵션을 사용하는 것이 좋습니다.

echo "export GIT_TERMINAL_PROMPT=1" >> ~/.bashrc || ~/.zshrc

개인 저장소에서 액세스 토큰을 생성하는 것을 잊지 마십시오.암호를 입력하라는 메시지가 나타나면 액세스 토큰을 붙여넣기만 하면 됩니다.행복한 클론 :)

이 명령을 추가하려고 했습니다.

GOPRIVATE=github.com/ {private_reponame}/* 내보내기

그리고 그것은 나에게 효과가 있었습니다.

로그인 대화 상자를 통해 github에 로그인하려고 시도하는 Windows "error: failed frompt script(프롬프트 코드 1) fatal: could not read for 'https://github.com ': No error"에서 동일한 문제가 발생했습니다.내가 대화상자를 취소했을 때 명령행에 로그인과 비밀번호를 요청했고 잘 작동했습니다.

나는 이 오류에 직면했습니다.terminal prompts disabled내 자격 증명을 변경한 후, 카르타고는 종속성을 업데이트하지 못했고 터미널에서 이 오류를 표시했습니다.

간단한 다음 단계를 수행했는데 작동하기 시작했습니다.

  1. 이전 자격 증명 제거keychain access
  2. 다른 위치에 동일한 저장소를 복제하려고 했습니다.
  3. 설정할 자격 증명(사용자 이름 + 암호)을 요청했습니다.
  4. 그리고 카르타고의 업데이트는 이전과 같이 작동했습니다.

다음 cmd를 사용해 보십시오.

GO111MODULE=on GOSUMDB=off go get github.com/examplesite/myprivaterepo

또는:

go clean -modcache
go get github.com/examplesite/myprivaterepo

다른 옵션은 자격 증명을 URL의 일부로 추가하는 것입니다.

예를 들어 GitLab의 저장소에 액세스하려면 URL에 다음 형식을 사용합니다.

https://<user>:<access-token>@<gitlab-server>/<path-to-repo>.git

보고서가 비공개이고 인증이 필요한 경우.자격 증명을 전달해야 하는 위치입니다.다음 명령은 도움이 됩니다.

 git config --global --add url.https://YOUR_USER_NAME:YOUR_GIT_TOKEN@gitswarm.YOUR_HOST.com.insteadof https://gitswarm.YOUR_HOST.com

토큰을 만드는 DOC

GitHub으로 시간을 절약하는 것이 다운로드 CLI에 도움이 된다는 것을 알게 되었습니다.gh

그것과 함께 내가 사용한 auth 명령어가 있고 그것은 내 삶을 더 편하게 만듭니다.

gh auth login

이 시점까지 스크롤을 내린 경우 위의 솔루션 중 어떤 것도 제대로 작동하지 않았음을 의미합니다.이거 한 번 해봐봐봐요.

PS: 좋아요 그리고 설명이 더 필요하면 댓글을 달아주세요.

RUN \
git config --global url.ssh://git@github.com/.insteadOf https://github.com/ && \
ssh-keyscan github.com > /etc/ssh/ssh_known_hosts

ENV GOPRIVATE=github.com/you-company/private-repo

WORKDIR /code
ADD . .
RUN --mount=type=ssh \
    --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    go mod download -x

언급URL : https://stackoverflow.com/questions/32232655/go-get-results-in-terminal-prompts-disabled-error-for-github-private-repo

반응형