매번 프롬프트에 사용자와 비밀번호를 입력하지 않고 GitExtension 에서 자동으로 푸시 앤 풀을 사용하고 싶습니다 .
그렇다면 자격 증명을 git에 어떻게 저장할 수 있습니까?
매번 프롬프트에 사용자와 비밀번호를 입력하지 않고 GitExtension 에서 자동으로 푸시 앤 풀을 사용하고 싶습니다 .
그렇다면 자격 증명을 git에 어떻게 저장할 수 있습니까?
답변:
운영
git config --global credential.helper store
그때
git pull
사용자 이름과 비밀번호를 제공하면 해당 정보가 나중에 기억됩니다. 자격 증명은 디스크 권한으로 "읽기 가능 / 쓰기 가능"이지만 여전히 일반 텍스트로 디스크에 파일로 저장됩니다.
나중에 비밀번호를 변경하려면
git pull
암호가 올바르지 않기 때문에 실패합니다 .git은 ~/.git-credentials
파일 에서 문제가되는 사용자 + 암호를 제거 하므로 이제 다시 실행하십시오.
git pull
새 비밀번호를 제공하여 이전과 같이 작동합니다.
를 사용하여 git config
git에서 자격 증명 저장소를 활성화 할 수 있습니다 .
git config --global credential.helper store
이 명령을 실행할 때 원격 저장소에서 처음으로 당기거나 밀 때 사용자 이름과 비밀번호를 묻는 메시지가 표시됩니다.
이후에 원격 저장소와의 통신을 위해 사용자 이름과 비밀번호를 제공 할 필요가 없습니다.
저장 형식은 .git-credentials
일반 텍스트로 저장된 파일입니다.
또한 git config credential.helper
메모리 캐시에 다른 도우미를 사용할 수 있습니다 .
git config credential.helper cache <timeout>
timeout parameter
자격 증명이 메모리에 보관되는 기간을 결정 하는 선택적이 필요합니다 . 도우미를 사용하면 자격 증명이 디스크를 건드리지 않으며 지정된 시간 초과 후에 지워집니다. default
값은900 seconds (15 minutes).
경고 :이 방법을 사용하면 git 계정 비밀번호는 plaintext
형식 으로 저장됩니다 global .gitconfig file
. 예를 들어 Linux에서는/home/[username]/.gitconfig
이것이 마음에 들지 않으면 ssh key
대신 계정에를 사용하십시오.
git config credential.helper cache
암호가 파일에 저장되지 않습니다 만 메모리에 저장됩니다. 참조 : git-scm.com/docs/git-credential-cache
권장되고 안전한 방법 : SSH
ssh Github 키를 작성하십시오. 이동 github.com -> 설정 -> SSH 및 GPG 키 -> 새 SSH 키. 이제 개인 키를 컴퓨터에 저장하십시오.
그런 다음 개인 키가 ~ / .ssh / 디렉토리에 id_rsa 로 저장되면 인증을 위해 다음과 같이 추가합니다.
ssh-add -K ~/.ssh/id_rsa
보다 안전한 방법 : 캐싱
git-credential-store를 사용하여 일정 기간 동안 사용자 이름과 비밀번호를 캐시 할 수 있습니다. CLI (터미널 또는 명령 프롬프트)에 다음을 입력하기 만하면됩니다.
git config --global credential.helper cache
다음과 같이 시간 초과 기간 (초)을 설정할 수도 있습니다.
git config --global credential.helper 'cache --timeout=3600'
훨씬 덜 안전한 방법
Git-credential-store를 사용할 수도 있지만 다음과 같이 암호를 디스크에 일반 텍스트 파일로 저장합니다.
git config credential.helper store
오래된 답변-빠르고 안전하지 않은
암호를 일반 텍스트로 저장 하는 안전하지 않은 방법입니다. 누군가가 컴퓨터를 제어 할 경우 암호가 노출됩니다!
다음과 같이 사용자 이름과 비밀번호를 설정할 수 있습니다.
git config --global user.name "your username"
git config --global user.password "your password"
터미널에 다음을 입력하십시오.
# Set git to use the credential memory cache
git config --global credential.helper cache
기본적으로 Git은 15 분 동안 비밀번호를 캐시합니다.
기본 비밀번호 캐시 제한 시간을 변경하려면 다음을 입력하십시오.
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
에서 GitHub의 도움말
cache
부분을로 바꿉니다 store
. 따라서 전체 명령은 다음과 같습니다 git config --global credential.helper store
.. 암호를 공개 텍스트 파일 (암호화없이)에 저장합니다.
--timeout
매개 변수 의 최대 값은 얼마입니까?
자격 증명~/.gitconfig
을 저장 하기 위해 파일을 편집 할 수 있습니다
sudo nano ~/.gitconfig
이미 가지고 있어야
[user]
email = your@email.com
user = gitUSER
이 파일의 맨 아래에 추가해야합니다.
[credential]
helper = store
이 옵션을 권장하는 이유는 전체 옵션이므로 언제든지 이동하고 변경해야하는 옵션을 제거해야합니다.
이 옵션은 개인용 컴퓨터에서만 사용하십시오.
그런 다음 당기면 | 클론 | git password를 입력하십시오. 일반적으로 암호는 ~/.git-credentials
다음 형식 으로 저장 됩니다
https://GITUSER:GITPASSWORD@DOMAIN.XXX
DOMAIN.XXX가 GITHUB.COM이 될 수있는 곳 | BITBUCKET.ORG | 다른
문서 참조
다음과 같이 자격 증명을 URL에 넣으십시오.
https://Username
:Password
@github.com/myRepoDir/myRepo.git
다음과 같이 저장할 수 있습니다 .
git remote add myrepo https://Userna...
... 사용 하는 예 :
git push myrepo master
이제 URL 별칭 을 나열 하는 것입니다.
git remote -v
... 그중 하나를 삭제하라는 명령 :
git remote rm myrepo
git@github.com:Username/myRepo.git
https
하지, ssh
이 같은 솔루션이 유용 할 수 있습니다. 또한 oauth-token을 사용할 수 있으며 GitHub 비밀번호보다 약간 더 안전합니다.
전역 설정의 경우 터미널을 열고 (어디서나) 다음을 실행하십시오.
git config --global user.name "your username"
git config --global user.password "your password"
이를 통해 머신에있는 로컬 git repo가 해당 정보를 사용합니다.
다음을 수행하여 각 저장소에 대해 개별적으로 구성 할 수 있습니다.
다음을 실행하십시오.
git config user.name "your username"
git config user.password "your password"
구성이 로컬이기 때문에 해당 폴더에만 영향을줍니다.
--local
태그 그러나 다시 아무 일도 발생하지 않습니다
git-credential-store를 사용하여 파일 시스템의 권한으로 만 보호되는 암호를 디스크에 암호화하지 않은 상태로 저장할 수 있습니다.
예
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
파일에 저장된 자격 증명을 확인할 수 있습니다 ~/.git-credentials
자세한 내용은 git-credential-store를 방문하십시오 -디스크에 자격 증명을 저장하는 도우미
SSH 인증을 사용하면 사용자 이름 / 암호 인증보다 더 안전합니다.
Mac을 사용하는 경우 SSH 클라이언트 인증이 MacOS 키 체인에 통합됩니다. SSH 키를 작성했으면 터미널에 입력하십시오.
ssh-add -K ~/.ssh/id_rsa
그러면 SSH 개인 키가 MacOS 키 체인에 추가됩니다. git 클라이언트는 원격 서버에 연결할 때 ssh를 사용합니다. 서버에 ssh 공개 키를 등록하면 문제가 없습니다.
SSH
액세스 권한을 부여하면 더 안전 할 수 없습니다 . HTTP 인증을 사용하면 자격 증명을 도용 한 사람 만에 액세스 할 수 GitHub/GitLab
있습니다. 또한 토큰은 수명이 제한되도록 설계되었습니다.
이상 진행 후 수십 등 SO 게시물, 블로그,의, 나는 밖으로 시도 모든 방법을, 그리고 이것이 내가 생각 해낸 것입니다. 모든 것을 다룹니다.
이것은 대화식 비밀 번호 프롬프트없이 저장소를 복제하기 위해 git을 안전하게 인증 할 수있는 모든 방법과 도구 입니다.
Just Works ™를 원하십니까? 이 마법의 총알입니다.
액세스 토큰을 얻으십시오 (Github 또는 Gitea 지침이 필요한 경우 치트 시트 섹션 참조) 및 환경 변수 (로컬 개발 및 배포 모두)로 설정하십시오.
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Github의 경우 다음 행을 그대로 복사하여 실행하십시오 .
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
축하합니다. 이제 https를 사용하든 ssh url 스타일을 사용하든 자동화 된 도구 복제 git 리포지토리가 비밀번호 프롬프트에 의해 방해받지 않습니다.
Github를 사용하지 않습니까?
다른 플랫폼 (Gitea, Github, Bitbucket)의 경우 URL 만 변경하면됩니다. 사용자 이름을 변경하지 마십시오 (임의의 구성 항목에 대해서는 필요하지만 임의 임).
적합성
이것은 MacOS, Linux, Windows (Bash), Docker, CircleCI, Heroku, Akkeris 등에서 로컬로 작동합니다.
더 많은 정보
치트 시트의 ".gitconfig 대신"섹션을 참조하십시오.
보안
치트 시트의 "보안"섹션을 참조하십시오.
git config --global credential."https://somegithost.com".username MyUserName
은 것은 귀하의 치트 시트에 있지만이 답변 스레드의 다른 곳은 아닙니다. 이 특정 솔루션은 OP의 질문에 대답하지 않지만 내 대답에 감사합니다.
위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 내가하고 싶은 다음마다 점점 유지 fetch
또는 pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Mac 용
다음과 같은 방법으로 비밀번호 문구를 묻는 것을 막을 수있었습니다.
vi ~/.ssh/config
UseKeychain yes
:wq!
Windows의 경우
이 stackexchange의 정보를 사용하여 작동시킬 수있었습니다 : https://unix.stackexchange.com/a/12201/348665
~/.gitconfig
파일 을 편집하는 것 외에도 다음과 같은 경우 수행 할 수 있습니다.
git config --local --edit
또는
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
또는
git config --global user.name 'your username'
git config --global user.password 'your password'
큰 따옴표를 사용하면 사용자 이름과 비밀번호에 일부 문자를 사용하여 비밀번호를 깨뜨릴 수 있습니다.
--local
또는 --global
구성 매개 변수가 프로젝트 또는 os 사용자를 위해 저장됨을 의미합니다.
그냥 사용
git config --global credential.helper store
git pull을 수행하면 사용자 이름과 비밀번호를 묻습니다. 지금부터는 사용자 이름과 비밀번호를 입력하라는 메시지가 표시되지 않습니다.
.git-credentials
를 실행할 때 사용자 이름과 비밀번호 (액세스 토큰)가 저장 git config --global credential.helper store
되는 위치입니다. 이는 다른 답변에서 제안한 내용이며 사용자 이름과 비밀번호 또는 액세스 토큰을 입력하십시오.
https://${username_or_access_token}:${password_or_access_token}@github.com
따라서 사용자 이름과 비밀번호 (액세스 토큰)를 저장하려면 :
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
이것은 github 로봇에 매우 유용합니다. 예를 들어 다른 브랜치에 대한 규칙을 설정 하여 동일한 도커 저장소에서 Chain 자동화 빌드 를 해결 한 다음이를 밀어서 트리거합니다.post_push
도커 허브의 후커에서 .
이에 대한 예제는 여기 에서 확인할 수 있습니다 .
스레드를 완전히 읽고이 질문에 대한 대부분의 답변을 실험 한 후에 결국 나에게 적합한 절차를 찾았습니다. 누군가가 복잡한 유스 케이스를 처리해야하지만 여전히 전체 스레드와 gitcredentials , gitcredentials-store 등 매뉴얼 페이지를 거치고 싶지 않은 경우를 대비하여 공유하고 싶습니다 .
내가 제안하는 절차를 검색 할 경우 (나 같은) 여러 다른 사용자 이름 / 암호 조합을 사용하여 여러 공급자 (GitLab, GitHub의,의 Bitbucket 등)에서 여러 저장소를 처리해야합니다. 대신에 작업을 단 하나의 계정이있는 경우에, 당신은 사용 떨어져 더 좋을 수도 git config --global credential.helper store
혹은 git config --global user.name "your username"
아주 잘되어 이전 답변에 설명되어있는 등 솔루션을.
내 해결책 :
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
참고 :이 명령은 ".git_repo_credentials"라는 새 파일을 홈 디렉토리에 생성합니다. Git은 사용자의 자격 증명을 저장합니다. 파일 이름을 지정하지 않으면 Git은 기본 ".git_credentials"를 사용합니다. 이 경우 단순히 다음 명령을 실행하면됩니다.
> git config credential.helper store
git config credential.*.username my_user_name
참고 : 리포지토리가 동일한 공급자 (예 : GitLab)의 경우 "*"를 사용하는 것이 좋습니다. 대신 다른 공급자가 리포지토리를 호스팅하는 경우 다음 예제와 같이 모든 리포지토리의 공급자에 대한 링크를 명시 적으로 설정하는 것이 좋습니다 (GitLab의 경우).
git config credential.https://gitlab.com.username my_user_name
이 시점에서 자격 증명이 필요한 명령 (예 git pull
:)을 실행하면 "my_user_name"에 해당하는 비밀번호를 묻는 메시지가 표시됩니다. git은 자격 증명을 ".git_repo_credentials"에 저장하고 후속 액세스에서 동일한 데이터를 자동으로 사용하기 때문에 한 번만 필요합니다.
Linux Ubuntu의 rifrol의 의견 에서이 답변 에서 Ubuntu의 방법은 다음과 같습니다.
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
다른 배포판은 바이너리를 제공하므로 빌드 할 필요가 없습니다.
OS X에서는 일반적으로 "osxkeychain"의 기본 모듈과 함께 "빌드"되어 제공되므로 무료로 사용할 수 있습니다.
공식 자식 문서를 확인하십시오 :
원격으로 연결하기 위해 SSH 전송을 사용하는 경우 암호없이 키를 사용할 수 있으므로 사용자 이름과 비밀번호를 입력하지 않고 안전하게 데이터를 전송할 수 있습니다. 그러나 이는 HTTP 프로토콜로는 불가능합니다. 모든 연결에는 사용자 이름과 비밀번호가 필요합니다. 암호에 사용하는 토큰이 임의로 생성되고 발음 할 수없는 2 단계 인증 시스템에서는 훨씬 더 어려워집니다.
다행히도, Git에는이를 지원할 수있는 자격 증명 시스템이 있습니다. Git에는 다음과 같은 몇 가지 옵션이 있습니다.
기본값은 전혀 캐시하지 않는 것입니다. 모든 연결은 사용자 이름과 비밀번호를 묻는 메시지를 표시합니다.
"캐시"모드는 특정 기간 동안 자격 증명을 메모리에 유지합니다. 암호는 디스크에 저장되지 않으며 15 분 후에 캐시에서 제거됩니다.
"저장"모드는 자격 증명을 디스크의 일반 텍스트 파일에 저장하며 만료되지 않습니다. 즉, Git 호스트의 비밀번호를 변경할 때까지 자격 증명을 다시 입력 할 필요가 없습니다. 이 방법의 단점은 암호가 홈 디렉토리의 일반 파일에 일반 텍스트로 저장된다는 것입니다.
Mac을 사용하는 경우 Git에는 "osxkeychain"모드가 제공되어 시스템 계정에 연결된 보안 키 체인의 자격 증명을 캐시합니다. 이 방법은 디스크에 자격 증명을 저장하지만 만료되지는 않지만 HTTPS 인증서 및 Safari 자동 채우기를 저장하는 동일한 시스템으로 암호화됩니다.
Windows를 사용하는 경우 "Git Credential Manager for Windows"라는 도우미를 설치할 수 있습니다. 이것은 위에서 설명한“osxkeychain”도우미와 비슷하지만 Windows 자격 증명 저장소를 사용하여 중요한 정보를 제어합니다. https://github.com/Microsoft/Git-Credential-Manager-for-Windows 에서 찾을 수 있습니다 .
Git 구성 값을 설정하여 다음 방법 중 하나를 선택할 수 있습니다.
$ git config --global credential.helper cache
$ git config --global credential.helper store