스크립트에서 git clone에 사용자 이름 / 암호를 제공하지만 .git / config에 자격 증명을 저장하지 않는 방법 https://user:password@host.com/name/.git 이것은 작동하지만 내 사용자 이름과

다음과 같은 스크립트에서 자식 저장소를 복제하고 있습니다.

git clone https://user:password@host.com/name/.git

이것은 작동하지만 내 사용자 이름과 암호! 은의 원래 URL에 저장됩니다 .git/config.

이를 방지 할 수는 있지만 여전히 스크립트에서이를 수행 할 수 있습니다 (따라서 수동 비밀번호 입력 없음)?



답변

내가 사용하는 방법은 실제로 git pull복제본 대신에 복제본을 사용하는 것입니다. 스크립트는 다음과 같습니다.

mkdir repo
cd repo
git init
git config user.email "email"
git config user.name "user"
git pull https://user:password@github.com/name/repo.git master

사용자 이름이나 비밀번호는에 저장되지 않습니다 .git/config. 그러나 다른 단계를 수행하지 않으면 현재 프로세스 (예 :)를 표시하는 명령에서 프로세스가 실행되는 동안 일반 텍스트 사용자 이름과 비밀번호가 표시됩니다 ps.

ssh를 사용할 수없는 경우 한 가지 더 제안은 실제로는 일반 텍스트 사용자 이름 / 암호 대신 OAuth 토큰을 사용하는 것입니다. 프로파일 설정 ( https://github.com/settings/tokens) 에서 OAuth 토큰을 생성 할 수 있습니다 .

그런 다음 해당 토큰을 사용하여 pull 명령은

git pull https://$OAUTH_TOKEN:x-oauth-basic@github.com/name/repo.git master


답변

최고의 솔루션 인 IMO는 맞춤형 GIT_ASKPASS도우미를 사용하고 다른 환경 변수로 암호를 제공합니다. 예를 들어, git-askpass-helper.sh다음과 같이 파일 을 작성하십시오 .

#!/bin/sh
exec echo "$GIT_PASSWORD"

다음 실행 git clone https://username@hostname/repo환경 변수 GIT_ASKPASS=/path/to/git-askpass-helper.shGIT_PASSWORD=nuclearlaunchcodes.

이는 프로세스 목록에도 비밀번호가 표시되지 않는 이점이 있습니다.


답변

~/.netrc파일에 연결 자격 증명을 입력 할 수 있습니다 . 다음과 같은 내용이 있습니다.

machine host.example.net
login bart
password eatmyshorts

해당 파일을 600으로 chmod하십시오. Windows를 사용하는 경우 다음 링크가 유용 할 수 있습니다. https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- Windows-to-Save 사용자 및 비밀번호

개인적으로 인증 목적으로 SSH 키를 사용하는 경향이 있습니다 (물론 허용되는 경우).


답변

이상 진행 후 수십 등 SO 게시물, 블로그,의, 나는 밖으로 시도 모든 방법을, 그리고 이것이 내가 생각 해낸 것입니다. 모든 것을 다룹니다.

참조 힘내 자격 증명 및 개인 패키지 쪽지를

이것은 대화식 비밀 번호 프롬프트없이 저장소를 복제하기 위해 git을 안전하게 인증 할 수있는 모든 방법과 도구 입니다.

  • SSH 공개 키
    • SSH_ASKPASS
  • API 액세스 토큰
    • GIT_ASKPASS
    • .gitconfig 대신
    • .gitconfig [인증서]
    • .git 자격 증명
    • .netrc
  • 보너스 : 개인 패키지와 연동
    • 노드 / npm package.json
    • 파이썬 / 핍 / 계란 요구 사항 .txt
    • 루비 보석 Gemfile
    • golang go.mod

일반 텍스트 스토리지가없는 최상의 옵션

여기에서 요청한 것 중에서 SSH 키 GIT_ASKPASS또는 git credential storeOS 키 체인 관리자를 사용하는 것이 가장 좋습니다.

GIT_ASKPASS는 아마도 3에 대해 가장 잘 이해되지 않았으므로 여기에 자세히 설명하고 다른 것은 치트 시트에 있습니다.

GIT_ASKPASS

GIT_ASKPASS스크립트 를 만드는 방법 :

echo 'echo $MY_GIT_TOKEN' > $HOME/.git-askpass

이것을 어떻게 사용 하는가:

export MY_GIT_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export GIT_ASKPASS=$HOME/.git-askpass
git clone https://token@code.example.com/project.git

스크립트는 다음과 같은 형식으로 stdin을받습니다.

Password for 'scheme://host.tld':

스크립트는 다음과 같은 Git ENV를받습니다.

GIT_DIR=/Users/me/project/.git
GIT_EXEC_PATH=/usr/local/Cellar/git/2.19.0_1/libexec/git-core
GIT_PREFIX=

치트 시트에 자세한 내용이 있습니다.


답변