programing

커밋을 푸시하기 위한https credential을 캐시하는 방법이 있습니까?

goodsources 2023. 4. 21. 20:49
반응형

커밋을 푸시하기 위한https credential을 캐시하는 방법이 있습니까?

최근 GitHub에서 (방화벽 문제로) https://로 저장소를 동기화하는 것으로 전환했는데 매번 패스워드를 요구합니다.

인증할 하는 것이 자격?git push

Git 1.7.9 (2012년 출시)이후 Git에는 credential helper라고 불리는 HTTP/HTTPS의 패스워드를 항상 입력하지 않아도 되는 깔끔한 메커니즘이 있습니다.

다음 중 하나의 자격 정보 도우미를 사용할 수 있습니다.

git config --global credential.helper cache

자격 정보helper cache value는 Git에게 특정 시간 동안 비밀번호를 메모리에 캐시하도록 지시합니다.기본값은 15분이며, 다음과 같이 긴 타임아웃을 설정할 수 있습니다.

# Cache for 1 hour
git config --global credential.helper "cache --timeout=3600"

# Cache for 1 day
git config --global credential.helper "cache --timeout=86400"

# Cache for 1 week
git config --global credential.helper "cache --timeout=604800"

필요에 따라서, 자격 정보를 영속적으로 보존할 수도 있습니다.아래의 다른 답변을 참조해 주세요.

또한 GitHub의 도움말로 Mac OS X에서 Homebrew를 사용하여 Git을 설치하는 경우 기본 Mac OS X 키스토어를 다음과 같이 사용할 수 있습니다.

git config --global credential.helper osxkeychain

Windows의 경우 Git Credential Manager for Windows 또는 msysgit에 wincredential이라는 도우미가 있습니다.

git config --global credential.helper wincred # obsolete

Git for Windows 2.7.3+(2016년 3월):

git config --global credential.helper manager

Linux의 경우 (2011년) (또는 KWallet 등의 기타 키링 구현)을 사용합니다.

현재(2020년)에는 (Linux에서)

페도라

sudo dnf install git-credential-libsecret
git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret

우분투

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

또한 다음과 같이 Git-credential-store를 사용하여 Git에 자격 증명을 영구적으로 저장할 수 있습니다.

git config credential.helper store

주의: 이것이 편리하지만, Git는 프로젝트 디렉토리 아래의 로컬 파일(.git-credentials)에 클리어 텍스트로 자격 증명을 저장합니다(아래의 「홈」디렉토리 참조).이 파일이 마음에 들지 않으면 이 파일을 삭제하고 캐시 옵션 사용으로 전환하십시오.

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

git config --unset credential.helper

를 「」에 하려면 , 「」.git-credentials 안에서%HOME%디렉토리가 : "Directory" 를 합니다.--global

git config --global credential.helper store

TLDR; Git 1.8.3+와 함께 암호화된 netrc 파일을 사용합니다.

Git 는 Git 장 urlHTTPS URL로 할 수 .~/.netrc (유닉스)%HOME%/_netrc:_를 참조해 주세요를 참조해 주세요.

, 이 파일은 일반 텍스트로 비밀번호를 저장합니다.

솔루션:GPG(GNU Privacy Guard)를 사용하여 파일을 암호화하고 Git이 패스워드를 필요로 할 때마다 복호화한다.push/pull/fetch/clone★★★★★★★★★★★★★★★★★★」


2.(2018년된 Git 2.18 (2018년 2분기)의 할 수 ..netrcfilename을 클릭합니다.

commit 786ef50, commit f07eed (2018년 5월 12일) by Luis Marsano (')참조하십시오.
(2018년 5월 30일 Junio C Hamano에 의해 병합)

git-credential-netrc: 수락gpg 표시

git-credential-netrc되어 '해독되었습니다.gpg.programoption.gpg.program에 할 수 있습니다.
은, 현대의 를 「Debian」이나 「GnuPG」와 같이 「Debian」과 같이 다른 , 의 문제입니다.gpg2


Windows용 단계별 지침

Windows 의 경우:

에는 (Git)가 .gpg.exe 체 gp gp GPG a in in 、 in gp 、 GPG 。gpg-agent.exeGPG를 사용합니다).

  • 최소 gnupg 명령줄 인터페이스(최신 명령어)를 설치하고 GPG 설치 디렉토리를 사용하여 PATH를 완료합니다.

      set PATH=%PATH%:C:\path\to\gpg
      copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(「(는)」에 주의해 copygpg. '.gpg4win-vanilla-2 부속되어 있다gpg2.exe복제해야 합니다.)

  • GPG 키를 작성 또는 Import하여 신뢰합니다.

      gpgp --import aKey
      # or
      gpg --gen-key
    

(그 키에 패스프레이즈를 붙여야 합니다).

  • 그 키를 신뢰하다

  • 증명 도우미 증명 내 에 설치합니다.%PATH%:

      cd c:\a\fodler\in\your\path
      curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
    

(주의: Git 2.25.x/2.26에서는 스크립트의 이름이 변경됩니다.아래를 참조해 주세요.

(네, 이것은 Bash 스크립트이지만 Git에 의해 호출되기 때문에 Windows에서 동작합니다.)

  • 클리어 텍스트로 _netrc 파일 만들기

      machine a_server.corp.com
      login a_login
      password a_password
      protocol https
    
      machine a_server2.corp.com
      login a_login2
      password a_password2
      protocol https
    

('()'는 잊지 protocol 부품 ' :http '이른바'httpsURL 을 참조해 주세요).

  • 해당 파일 암호화:

      gpg -e -r a_recipient _netrc
    

(이것으로, 를 삭제할 수 있습니다._netrc 「」, 「」만 유지_netrc.gpg암호화되어 있습니다).

  • 암호화된 파일 사용:

      git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

(「(는)」에 주의해 /':C:\path\to...가 없습니다 (할 수 .)-v -d살피다

이 필요한 는 모두 (S) URL을 ._netrc.gpg파일을 작성하고, 접속하고 있는 서버에 관련 붙여진 로그인/비밀번호를 사용합니다.처음에 GPG는 GPG 키의 패스프레이즈를 요구하여 파일을 복호화합니다.또, 최초의 GPG 콜에 의해서 자동적으로 기동되는 gpg-agent가 패스 프레이즈를 제공합니다.

이렇게 하면 하나의 파일에 여러 개의 URL/로그인/비밀번호를 외워서 디스크에 저장할 수 있습니다.
각 리모트 서비스에 대해 다른 패스워드를 기억해 (세션당 1회) 입력해야 메모리에 캐시할 수 있는 "캐시" 도우미보다 편리합니다.


2.26 2(Q1 2020)에서 credential을 사용할 수 있습니다..netrc는 개봉 즉시 작동하도록 업데이트되었습니다.「패치/토론」을 참조해 주세요.

Denton Liu()Denton-L의 commit 6579d93, commit 1c78(2019년 12월 20일)을 참조하십시오.
(2019년 12월 25일, Junio C Hamano에 의해 합병 ----커밋 1fd27f8에서)

contrib/credential/netrc: 제조PERL_PATH 가능

서명자: Denton Liu

"Perl"의 "Shebang"에 Perl git-credential-netrc하드코드 되어있었어요
그러나 일부 사용자는 다른 위치에 위치할 수 있으며 스크립트를 수동으로 편집할 수 있습니다.다만, 유저에 따라서는, 다른 장소에 배치되어 있는 경우가 있기 때문에, 수동으로 스크립트를 편집하지 않으면 안 됩니다.

템플릿으로 나타낼 접두사를 스크립트에 추가하고 생성된 버전을 무시합니다.
설을 강화Makefile so that it generates 그렇게 해서git-credential-netrc부에서git-credential-netrc.perl, 다른 펄 스크립트처럼.(다른 Perl 스크립트와 마찬가지로).

도 Makefile에서 당했다.contrib/mw-to-git/Makefile.

그리고:

2.26(Q1 2020)에서는 .netrc를 사용하기 위한 샘플 credential 도우미가 즉시 작동하도록 업데이트되었습니다.

Denton Liu()Denton-L의 commit 6579d93, commit 1c78(2019년 12월 20일)을 참조하십시오.
(2019년 12월 25일, Junio C Hamano에 의해 합병 ----커밋 1fd27f8에서)

contrib/credential/netrc: 레포 밖에서 작업

서명자: Denton Liu

★★★★★★★★★★★★★★★,git-credential-netrc는 git하지 않습니다.하다

fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.

그러나 저장소 내에 있어야 하는 실제 이유는 없습니다.credential 도우미는 저장소 밖에서도 정상적으로 작업할 수 있어야 합니다.

.config() 해서git-credential-netrc더 이상 저장소 내에서 실행할 필요가 없습니다.

Jeff King()peff은 다음과 같이 덧붙입니다.

gpg-encrypted를 합니다.netrc 않은 는, ( )를 사용해 .credential-store를 참조해 주세요.
「읽기 전용」패스워드 액세스의 경우는, 다음과 같은 설정과 조합하는 것이 좋습니다.

[credential "https://github.com"]
username = peff
helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"

2013년'fatal: Not a git repositoryGit.pm ( 2022:Git 2.39 (Q4 2022) 정 :

Jeff peffKing의 commit 20da61f (2022년 10월 22일)를 참조하십시오().
Michael McClimon()mmcclimon77a1310(2022년 10월 16일)을 참조하십시오.
(Junio C Hamano에 의해 병합됨----commit 330135a, 2022년 10월 28일)

: rev-module을 신뢰하여 맨 저장소를 찾습니다Git.pm.

서명자: Jeff King

저장소 개체를 초기화할 때 "를 git rev-parse --git-dir(man)실행하여 Git의 C 버전이 올바른 디렉토리를 찾을 수 있도록 합니다.
그러나 이상하게도 이것이 실패해도 우리는 자동으로 "git 저장소가 아니다"라고 말하지 않습니다.
대신 자체 Perl 검사를 수행하여 저장소가 비어 있는지 확인합니다.

디렉토리의양쪽 .rev-parse는 bare 디렉토리와 non-bare 디렉토리의 양쪽 모두를 bare로 합니다.
이 로직은 d5c7721(')에서 유래합니다.Git.pm: 작업복사 내의 서브디렉토리 지원 추가", 2006-06-24, Git v1.4.3-rc1 -- merge) 하지만 rev-parse에만 의존할 수 없는 이유를 알 수 없습니다.
은 ada rev-parse를 bare로 할 수 있습니다WorkingCopy저장소가 비어 있는 경우에도 마찬가지입니다.

하지만 점점 더 나빠진다.
8959555 이후 (setup_git_directory(): 최상위 디렉토리, 2022-03-02, Git v2.36.0-rc2 --merge에 소유자 체크 추가)(setup_git_directory(): 최상위 디렉토리 2022-03-02에 소유자 체크를 추가합니다.그것은 매우 잘못되어 있습니다(위험합니다).
Perl 코드는 동일한 소유권 검사를 구현하지 않습니다.
맨 고 '찾다', '찾다', '찾다', '찾다', '찾다', '찾다', '찾다', '찾다', '찾다', '찾다'GIT_DIR이 경우 이후 Git 명령어에 디렉토리가 정상임을 확인하고 우리를 신뢰하도록 지시합니다.
즉, 8959555에 의해 차단된 취약성을 다시 엽니다.Git.pm의 저장소 검색 코드입니다.

리비전하다저장소에 없는 경우 이를 통해 취약성이 수정됩니다.
'하다', '하다', '하다' 이렇게 --is-bare-repository맨몸인지 아닌지를 알려주는 기능을 제공합니다.

자격 증명 저장소를 사용합니다.

OS X Linux의 Git 2.11+의 경우 Git의 내장된 자격 증명 저장소를 사용합니다.

git config --global credential.helper libsecret

Windows 의 msysgit 1.7.9+ 의 경우:

git config --global credential.helper wincred

OS X에서 Git 1.7.9+를 사용하는 경우:

git config --global credential.helper osxkeychain

HTTPS URL에 사용자 자격 증명을 저장하는 쉽고 구식 방법이 있습니다.

https://user:password@github.com/...

은 '다'라는 URL로 할 수 .git remote set-url <remote-repo> <URL>

이 접근법의 분명한 단점은 비밀번호를 일반 텍스트로 저장해야 한다는 것입니다. 이름)만 입력해도 됩니다.https://user@github.com/...그럼 최소한 절반의 번거로움도 덜 수고를 덜 수 있습니다.

SSH로 전환하거나 GitHub 클라이언트소프트웨어를 사용하는 것이 좋습니다.

그냥 사용하시면 됩니다.

git config credential.helper store

다음에 pull 또는 push를 사용하여 비밀번호를 입력하면 .git-credentials 파일에 일반 텍스트로 저장됩니다(약간 안전하지 않지만 보호된 폴더에 넣습니다).

이 페이지에 기재된 바와 같이 이상입니다.

git-credential-store

도우미를 먼저 다운로드해야 한다는 것은 금방 알 수 없었습니다.자격증을 찾았어요Atlassian's Permanently 인증 Git 저장소에서 도우미 다운로드.

견적:

OS X에서 자격 증명 캐싱과 함께 Git을 사용하려면 다음 단계를 수행하십시오.

binary git-credential-osxkeychain을 다운로드합니다.

다음 명령을 실행하여 바이너리가 실행 가능한지 확인합니다.

chmod a+x git-credential-osxkeychain

에 넣어주세요./usr/local/bin.

다음 명령을 실행합니다.

git config --global credential.helper osxkeychain

URL 의 일부로서 로그인 credential을 포함하기만 하면 됩니다.

git remote rm origin
git remote add origin https://username:mypassword@github.com/path/to/repo.git

주의: 이 방법은 권장하지 않습니다만, 급해서 다른 방법이 없으면 이 방법을 사용할 수 있습니다.

GNU/Linux 셋업에서는 ~/.netrc도 정상적으로 동작합니다.

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

Git가 HTTPS 전송을 위해 사용하는 네트워크 라이브러리에 따라 달라질 수 있습니다.

Git Credential Manager(GCM) 플러그인을 사용할 수 있습니다.현재 GitHub에서 관리하고 있습니다.좋은 점은 비밀번호를 일반 텍스트가 아닌 Windows Credential Store에 저장할 수 있다는 것입니다.

프로젝트의 릴리스 페이지에 설치 프로그램이 있습니다.이것은 또한 자격 증명 매니저가 내장된 윈도우용 Git의 공식 버전을 설치합니다.GitHub(및 기타 서버)에 대한 2단계 인증이 가능합니다.또한 초기 로그인을 위한 그래픽 인터페이스가 있습니다.

Cygwin 사용자(또는 이미 공식 Git for Windows를 사용하는 사용자)는 수동 설치를 선호할 수 있습니다.릴리스 페이지에서 zip 패키지를 다운로드합니다.패키지를 추출한 후install.cmd 이 은 to파다다 your .★★★★★★★★★★★★★★★★,~/bin님. (<고객명>님.<고객명>님.~/binPATH를 선택합니다.다음으로 다음 명령을 사용하여 설정합니다.

git config --global credential.helper manager

후 Git은 "Git"을 합니다.git-credential-manager.exe이치

Mark가 말한 것처럼 패스워드를 보통 텍스트로 저장하고 싶지 않다면 pushing과 다른 GitHub URL을 사용하여 가져올 수 있습니다.「」아래에 .[remote "origin"]:

url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git

Push할 때 암호를 계속 요구하지만 적어도 오픈 소스 프로젝트의 경우 가져올 때는 암호를 요청하지 않습니다.

OAuth

독자적인 퍼스널 API 토큰(OAuth)을 작성하고, 통상의 credential을 사용하는 것과 같은 방법으로 사용할 수 있습니다./settings/tokens예를 들어 다음과 같습니다.

git remote add fork https://4UTHT0KEN@github.com/foo/bar
git push fork

.netrc

하나의 은 하다입니다.~/.netrc )_netrc「」, 「Windows」의 경우).

machine github.com
login USERNAME
password PASSWORD

HTTPS 의 경우는, 다음의 행을 추가합니다.

protocol https

credential 도우미

HTTPS를 사용할 때 Git에 GitHub 비밀번호를 캐시하려면 GitHub와 대화할 때마다 Git에 GitHub 사용자 이름과 비밀번호를 기억하도록 하는 자격증 도우미를 사용할 수 있습니다.

  • Mac:git config --global credential.helper osxkeychain )osxkeychain helper 추가)
  • Windows:git config --global credential.helper wincred
  • 및 Linux 및및 :git config --global credential.helper cache

관련:

인증 정보 도우미를 사용할 수 있습니다.

git config --global credential.helper 'cache --timeout=x'

서 ''는x는 초수입니다.

복제 후 " " "reporepo/.git/config하다

[user]
    name = you_name
    password = you_password
[credential]
    helper = store

username ★★★★★★★★★★★★★★★★★」password

이것이 안전한 솔루션이 아닌 것은 알지만, 다른 설치 없이 단순한 솔루션만 필요할 수 있습니다.도우미 = 스토어가 작동하지 않아 더미 도우미를 만들었습니다.

스크립트를 생성하여 사용자의 bin 폴더에 넣습니다.여기에서는 credfake라고 합니다.이 스크립트는 사용자의 사용자 이름과 비밀번호를 제공합니다.

#!/bin/bash
while read line
do
  echo "$line"
done < "/dev/stdin"
echo username=mahuser
echo password=MahSecret12345

실행 가능:

chmod u+x /home/mahuser/bin/credfake

git로 설정합니다.

git config --global credential.helper /home/mahuser/bin/credfake

(또는 --global 없이 1개의 repo에만 사용)

그리고 - voila - git은 이 사용자 + 비밀번호를 사용합니다.

계정 비밀번호 대신 인증 토큰을 사용해야 합니다.GitHub 설정/어플리케이션으로 이동하여 퍼스널액세스 토큰을 만듭니다.토큰은 비밀번호와 동일한 방법으로 사용할 수 있습니다.

토큰은 사용자가 프로젝트 작업에 계정 암호를 사용하지 못하도록 하기 위한 것입니다.새 토큰을 만들거나 이전 토큰을 해지하는 등의 관리 작업을 수행할 때만 암호를 사용하십시오.


사용자에게 GitHub 계정에 대한 전체 액세스 권한을 부여하는 토큰 또는 암호 대신 프로젝트별 배포 키를 사용하여 단일 프로젝트 저장소에 대한 액세스를 허용할 수 있습니다.Git 프로젝트는 일반 자격 증명으로 다른 Git 계정이나 프로젝트에 액세스할 수 있는 경우 다음 단계에서 이 다른 키를 사용하도록 구성할 수 있습니다.

  1. SSH 컨피규레이션파일에 SSH가 .Host,IdentityFile에는, 「」, 「아까」라고 하는 것이 있습니다.UserKnownHostsFile 「 」의 경우도 있습니다.User( 없없을 ( )
  2. 셸 SSH 래퍼 셸 스크립트를 합니다.ssh -F /path/to/your/config $*
  3. " "GIT_SSH=/path/to/your/wrapper ★★★★★★★★★★★★★★★★★★.git remote는 (으)ㄹ 수 있다(으)를 사용해야 합니다.git@github.com:user/project.git맷합니니다다

보안을 위해 자격 증명을 사용하는 것이 좋지만 캐시를 사용하여 일정 기간 유지할 수 있습니다.

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

자격 증명이 3600초 동안 저장됩니다.

보통 리모트 URL 같은 게 있는데

git remote -v

origin    https://gitlab.com/username/Repo.git (fetch)
origin    https://gitlab.com/username/Repo.git (push)

를 하는 동안 사용자 이름과 git push 「 「 」를해 주세요.

 git remote set-url origin https://username:password@gitlab.com/username/Repo.git

같은 URL(패스워드를 포함한 사용자 상세)을 오리진에 추가했습니다.

메모: 사용자 이름이 이메일 ID이면 작동하지 않습니다.

git remote -v

origin    https://username:password@gitlab.com/username/Repo.git (fetch)
origin    https://username:password@gitlab.com/username/Repo.git (push)

저와 같이 2단계 인증을 사용한다면 상황은 조금 다릅니다.다른 곳에서는 좋은 답을 찾지 못했기 때문에 나중에 찾을 수 있도록 여기에 하나 붙여 놓을게요.

2단계 인증을 사용하는 경우 사용자 이름/비밀번호 지정이 작동하지 않고 액세스가 거부됩니다.그러나 애플리케이션 액세스 토큰을 사용하고 Git의 자격 정보 도우미를 사용하여 이를 캐시할 수 있습니다.해당하는 링크는 다음과 같습니다.

어디서 봤는지 기억이 안 나는데, 사용자 이름을 물어보면 응용 프로그램 액세스 토큰을 거기에 붙입니다.그런 다음 암호를 비워 두십시오.내 Mac에서 작동했어.

Windows 10을 사용하고 있습니다.

git config --global credential.helper wincred

또한 bashrc 파일을 편집하고 이 파일에 스크립트를 추가합니다.

Git을 시작할 때 비밀번호를 한 번 입력하고 로그오프할 때까지 비밀번호를 기억합니다.

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

gitcredentials(7) Manual Page에서 답변을 받았습니다.제 경우 Windows 설치에는 credential-cache가 없습니다.credential-store를 사용합니다.

credential-store를 사용하면 사용자 이름/비밀번호가 [user folder]/.git-credentials 파일에 저장됩니다.사용자 이름/비밀번호를 삭제하려면 파일 내용을 삭제하기만 하면 됩니다.

2021년 현재 HTTPS 리모트용 안전한 크로스 플랫폼 솔루션이 있습니다.더 이상 암호를 입력할 수 없습니다!SSH 키 필요 없어!더 이상 개인 액세스 토큰이 없습니다!

GitHub에서 개발한 Git Credential Manager를 설치합니다(다운로드).GitHub, BitBucket, Azure, GitLab에 대한 비밀번호 없는 OAuth 인증을 지원합니다.이는 GitHub 및 기타 플랫폼에서 2단계 인증을 활성화하여 계정의 보안을 크게 향상시킬 수 있음을 의미합니다.

를 누르면 다음과 같은 인증 방식을 선택할 수 있습니다.

> git push
Select an authentication method for 'https://github.com/':
  1. Web browser (default)
  2. Device code
  3. Personal access token
option (enter for default): 1
info: please complete authentication in your browser...

Linux 에서는, 약간의 셋업이 필요합니다.다음은 20시간 동안 메모리에 credential을 캐시하기 때문에 하루에 한 번까지 인증해야 합니다.

git-credential-manager-core configure
git config --global credential.credentialStore cache
git config --global credential.cacheoptions=--timeout 72000

gnome-keyring 또는 KWallet에 익숙한 파워 유저는 credential 스토어를 libsecret으로 변경하는 것을 선호할 수 있습니다.

외관 구성:위 프롬프트에서 항상 '웹 브라우저'를 선택하기 때문에 GitHubAuthModes 기본 설정을 생략합니다.GCM의 최신 버전에는 인증 흐름에 추가 클릭을 추가하는 GUI가 포함되어 있으므로 비활성화합니다.

git config --global credential.gitHubAuthModes browser
git config --global credential.guiPrompt false

작곡가 매뉴얼에서는 GitHub API를 사용하지 않도록 할 수 있으며 다음과 같이 동작합니다.git clone:

「 」를 는,no-api.trueGitHub API의 GitHub입니다.단, 사용방법과는 달리git드라이버는 직접, 작곡가는 여전히 GitHub의 zip 파일을 사용하려고 합니다.

섹션은 다음과 같습니다.

"repositories": [
    {
        "type": "vcs",
        "no-api": true,
        "url": "https://github.com/your/repo"
    }
],

API가 존재하는 데는 이유가 있습니다.따라서 이것은 github.com의 부하 증가에 대한 최후의 수단이어야 합니다.

Ubuntu 20.04 및 18.04에서 테스트된 Ubuntu의 Git Credential Manager(GCM)를 사용하여 로컬로 자격 정보를 캐싱하지만 다른 Linux Distros에서 작동합니다.

  1. git 자격 증명 관리자 설정:
curl -LO https://raw.githubusercontent.com/GitCredentialManager/git-credential-manager/main/src/linux/Packaging.Linux/install-from-source.sh
sh ./install-from-source.sh
git-credential-manager-core configure
git config --global credential.credentialStore cache
git config --global credential.cacheoptions "--timeout 72000"
sudo rm -rf git-credential-manager/
sudo rm install-from-source.sh
  1. 뛰다git fetch
  2. 선택합니다.Device code
  3. 링크를 방문하여 출력에 제공된 코드를 입력합니다.

MacOS에서도 이 문제가 발생했는데 다음 명령어를 사용할 수 있었습니다.

rm -rf  ~/.git-credentials 

git credential 。그리고 다음번엔 제가 이걸 썼을 때pushcommand, token).command, voila: "사용자 이름과 비밀번호(또는 토큰를 입력하도록 됩니다.

2단계 인증은 웹 사이트에 대한 사용자 인증 방법을 변경했지만 Git은 여전히 사용자가 메모리에서 암호를 입력할 수 있다고 가정합니다.

Git-credential-oauth 소개: OAuth를 사용하여 GitHub, GitLab, BitBucket 및 기타 위조품을 안전하게 인증하는 Git 인증 도우미입니다.

비밀번호가 없습니다!더 이상 개인 액세스 토큰이 없습니다!SSH 키 필요 없어!

처음 을 누르면 도우미가 인증을 위해 브라우저 창을 엽니다.캐시 타임아웃 내의 후속 푸시는 상호 작용이 필요하지 않습니다.

https://github.com/hickford/git-credential-oauth/releases/ 에서 인스톨 합니다.

구성 대상:

git config --global --unset-all credential.helper
git config --global --add credential.helper "cache --timeout 7200" # two hours
git config --global --add credential.helper oauth

「 」를 사용하고 osxkeychain토큰이 만료되어 갱신하려면 다음 절차를 수행합니다.

터미널에서 실행한 다음 Enter 키를 두 번 누릅니다.

git credential-osxkeychain erase
 host=github.com
 protocol=https

이것으로, 유저명/패스워드의 입력이 요구됩니다.그러나 때로는 이것이 '취득'하지 못하고 계속 재진입해야 할 것 같습니다.

이 경우 컴퓨터를 재시작합니다.다음에 git 명령어를 실행하여 사용자 이름/비밀번호를 입력하면 저장됩니다.

언급URL : https://stackoverflow.com/questions/5343068/is-there-a-way-to-cache-https-credentials-for-pushing-commits

반응형