source

"clone clone git@remote.git" 실행 시 사용자 이름과 비밀번호를 제공하려면 어떻게 해야 합니까?

myloves 2023. 4. 19. 00:43

"clone clone git@remote.git" 실행 시 사용자 이름과 비밀번호를 제공하려면 어떻게 해야 합니까?

다음과 같은 HTTPS 요구에 사용자 이름과 비밀번호를 제공하는 방법을 알고 있습니다.

git clone https://username:password@remote

다만, 다음과 같이 리모콘에 유저명과 패스워드를 제공하는 방법을 알고 싶습니다.

git clone git@remote.git

저는 이렇게 해봤어요.

git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password

하지만 효과가 없었어요.

마이클 샤프의 코멘트에 근거합니다.

비밀번호는 Bash 이력 파일에 기록되지 않도록 생략할 수 있습니다.

git clone https://username@github.com/username/repository.git

패스워드를 입력하도록 요구됩니다.

또는 다음을 사용할 수 있습니다.

git clone https://username:password@github.com/username/repository.git

GitHub 저장소에서 이 방법을 사용할 수 있었습니다.

user@host:path/to/repo하여 "Git"에 합니다.host 이름 "" " " " " " " " 를 user. 발신인:

대체 scp와 같은 구문을 ssh 프로토콜과 함께 사용할 수도 있습니다.

[user@]host.xz:path/to/repo.git/

★★★의 @을 사용하다인증방식(패스워드, 공개키 등)은 Git이 아닌 ssh로 결정됩니다.리모트 서버의 설정에 따라서는 ssh가 패스워드를 사용하지 않을 수도 있기 때문에 Git은 패스워드를 ssh에 전달할 방법이 없습니다.

ssh-agent하지 않도록

ssh 패스워드를 항상 입력할 필요는 없습니다.일반적인 해결책은 공개/비밀 키쌍을 생성하여 리모트서버상의 파일에 공개 키를 삽입하고 개인 키를 로딩하는 입니다.또한 한번 로그인하도록 Git over SSH 구성, ssh암호 구문에 대한 GitHub 도움말 페이지, gitolite의 ssh 문서 및 Heroku의 ssh문서참조하십시오.

GitHub(또는 Heroku 또는...)에서 여러 계정 선택

GitHub 또는 Heroku와 같은 장소에 여러 개의 계정이 있는 경우 여러 개의 ssh 키가 있습니다(계정당 최소 1개).로그인할 계정을 선택하려면 사용할 개인 키를 ssh에 지정해야 합니다.

를 들어,계정이 합니다. GitHub 계정은 2개입니다.foo ★★★★★★★★★★★★★★★★★」bar 키:foo~/.ssh/foo_github_id 키와 입니다.bar~/.ssh/bar_github_id을 하고 git@github.com:foo/foo.git당신의 것과 함께foo 및 account.git@github.com:bar/bar.git당신의 것과 함께bar이렇게 하다, 이렇게 하면 다음과 .~/.ssh/config:

Host gh-foo
    Hostname github.com
    User git
    IdentityFile ~/.ssh/foo_github_id
Host gh-bar
    Hostname github.com
    User git
    IdentityFile ~/.ssh/bar_github_id

그런 다음 다음과 같이 두 리포지토리를 복제합니다.

git clone gh-foo:foo/foo.git  # logs in with account foo
git clone gh-bar:bar/bar.git  # logs in with account bar

ssh를 완전히 회피하다

일부 서비스에서는 ssh 대신 HTTP 액세스를 제공합니다.

  • GitHub:

    https://username:password@github.com/username/repository.git
    
  • Gitorious:

    https://username:password@gitorious.org/project/repository.git
    
  • Heroku: 이 지원 문서를 참조하십시오.

경고: 클론 URL에 비밀번호를 추가하면 Git이 일반 텍스트 비밀번호를 저장합니다..git/configHTTP 사용 시 비밀번호를 안전하게 저장하려면 인증 도우미를 사용하십시오.예를 들어 다음과 같습니다.

git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git

위와 같이 하면 Git은 15분에 한 번씩 비밀번호를 요구합니다(기본값).자세한 것은, 을 참조해 주세요.

문제를 일으키고 있는 특수한 케이스로 대체하려면 다음 인수를 수행합니다.

 !   #   $   &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]

%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

예를 들면...

URL: 제 url URL:https://usern@me:p@ssword@git/reponame.git

: " " " " URL:https://usern%40me:p%40ssword@git/reponame.git

@Bassetassen의 답변에서 @plosco는 사용할 수 있다고 언급했습니다.git clone https://<token>@github.com/username/repository.git【깃허브클로닝을 자동화하려고 할 때처럼 이 답변을 접하게 될 경우를 대비해서 그 방법을 자세히 설명하려고 했습니다.

GitHub에는 매우 편리한 가이드가 있지만, 자동화 목적으로 모든 것을 한 줄에 포함시키고 싶다면 어떻게 해야 하는지 설명하지 않습니다.복제 URL에 토큰을 추가하면 토큰이 일반 텍스트로 저장됩니다. .git/config이것은 분명히 거의 모든 사용 사례에 대한 보안 위험이지만, 작업이 끝나면 리포(repo)를 삭제하고 토큰을 취소할 예정이기 때문에 신경 쓰지 않습니다.

1. 토큰을 작성

GitHub은 토큰을 얻는 방법에 대한 전체 가이드를 가지고 있지만, 여기 TL;DR이 있습니다.

  1. [설정(Settings)]> [개발자 설정(Developer Settings)]> [퍼스널 액세스 토큰(Personal Access Tokens)]으로 이동합니다(여기 다이렉트링크
  2. "새 토큰 생성"을 누른 후 비밀번호를 다시 입력합니다.(여기는 다른 다이렉트 링크입니다)
  3. 설명/이름을 설정하고 "repo" 권한을 확인한 후 페이지 하단에 있는 "Generate token" 버튼을 누릅니다.
  4. 페이지를 떠나기 전에 새 토큰 복사

2. Repo 복제

@입니다.@plosco pl same same 。git clone https://<token>@github.com/<username>/<repository>.git , , , , , , 합니다.<token>,<username> ★★★★★★★★★★★★★★★★★」<repository>츠키노

폴더 git clone https://<token>@github.com/<username>/<repository.git> <folder>서, snowledge.<folder>신이짐!!!!!!!!!!!!!!! 사용하실 수 ..,..,~다른 곳에서 할 수 있는 것처럼 여기에서도 할 수 있습니다.

3. 흔적을 남기지 않는다

당신이 하는 일이 얼마나 민감한지에 따라 이 모든 것이 필요한 것은 아닐 수도 있다.

  • 한동안 사용할 생각이 없다면 토큰을 두고 싶지 않을 수 있으므로 토큰 페이지로 돌아가서 옆에 있는 삭제 버튼을 누르십시오.
  • 하세요.rm -rf <folder>.
  • 없는 할 수 .git remote remove origin 그냥 됩니다.git remote set-url origin https://github.com/<username>/<repository.git>.
  • bash 기록을 클리어하여 토큰이 로그에 기록되지 않도록 합니다.이렇게 하는 방법은 여러 가지가 있는데, 이 질문, 이 질문보세요.단, 위의 모든 명령어가 저장되는 것을 방지하기 위해 공백으로 추가하는 것이 더 쉬울 수 있습니다.

내가 전문가가 아니라는 걸 알아둬라. 그래서 위의 것들은 법의학 연구에 흔적이 남지 않는다는 점에서 안전하지 않을 수도 있어.

Post 13 2021년 8월 13일 사용 필요

  • Git 클론

    https://username:token@github.com/username/repository.git

토큰을 생성하려면:

설정 >> 개발자 설정 >> 퍼스널액세스 토큰 >> 새로운 토큰 생성

  • Git 푸시

후 에는 복제 성공 시git push은 하다, 확인하다, 이렇게 하면 ..git/config에는 「」이라고 표시됩니다.

[remote "origin"]
    url = https://username:tokenxxxxxxxxxx@github.com/username/repo.git

답변은 많지만 사용자 이름이나 비밀번호에 특수문자가 포함되어 있을 때 반복적으로 발생하는 문제에 직면하게 됩니다.

URL은 git의 사용자 이름과 비밀번호를 인코딩한 후 URL 자체의 일부로 사용합니다(보안 문제가 없는 경우).

예를 들어, URL 인코딩된 사용자 이름 값

'user+1'은 user%2입니다.지하 1층

및 URL 인코딩된 비밀번호 값

"Welcome@1234"는 "Welcome%401234"입니다.

GIT 클론 URL은 다음과 같습니다.

git clone https://user%2B1:Welcome%401234@actual-git-url-for-the-repo하는 반면★★★★★★★★★★★★★★★★★★★★★★★★★★★」

git clone https://user+1:Welcome@1234@actual-git-url-for-the-repo 에러가 403개 표시됨

이게 도움이 됐으면 좋겠다.

만약을 위해 온라인 URL 인코딩을 원합니다.https://www.urlencoder.org/

저는 이 문제를 다음과 같이 해결했습니다.

여기에 이미지 설명 입력

Windows 에서는, 다음의 순서에 의해서, GitHub 로그인 창이 재트리거 됩니다.git clone 삭제:

  • "Credential Manager" 검색 시작 메뉴
  • "Windows 자격 증명"을 선택합니다.
  • Git 또는 GitHub 관련 자격 증명 삭제

결과

★★★★★★★★★를 사용하고 있는 경우는http/https사용자 입력이나 사용자 프롬프트(예를 들어 CI/CD 파이프라인 내)를 전혀 필요로 하지 않고 프로세스를 완전히 자동화할 수 있습니다.git credential.helper

GIT_CREDS_PATH="/my/random/path/to/a/git/creds/file"
# Or you may choose to not specify GIT_CREDS_PATH at all.
# See https://git-scm.com/docs/git-credential-store#FILES for the defaults used

git config --global credential.helper "store --file ${GIT_CREDS_PATH}"
echo "https://alice:${ALICE_GITHUB_PASSWORD}@github.com" > ${GIT_CREDS_PATH}

서, 「」를 할 수 .ALICE_GITHUB_PASSWORD이전 셸 명령 또는 파이프라인 구성 등의 환경 변수.

"store" 기반의 git-credential-helper는 일반 텍스트로 비밀번호와 값을 저장합니다.따라서 토큰/비밀번호에 매우 제한된 권한이 있는지 확인하십시오.


이제 https://alice@github.com/my_repo.delays를 자동화 시스템이 repo를 가져오는 데 필요한 위치에 사용합니다.이것에 의해, 다음의 credential이 사용됩니다.alicegithub.comthe-intential-modoss에 된다.

저는 GIT_ASKPASS 환경을 사용하여 git에 HTTPS 자격 정보를 제공하는 것을 선호합니다.
및가 「」로 되어 .USR ★★★★★★★★★★★★★★★★★」PSW다음 스크립트는 패스워드의 트레이스를 이력 및 디스크에 남기지 않고 패스워드의 특수문자에 취약하지 않습니다.

GIT_ASKPASS=$(mktemp) && chmod a+rx $GIT_ASKPASS && export GIT_ASKPASS

cat > $GIT_ASKPASS <<'EOF'
#!/bin/sh
exec echo "$PSW"
EOF

git clone https://${USR}@example.com/repo.git

주의: 유전 마커 주위에 작은 따옴표를 붙입니다.'EOF', 임시 는 문자 그대로 ""를 합니다.$PSWPSW

리포지토리를 복제하려면 먼저 액세스 토큰을 생성한 다음(로그인 암호를 더 이상 사용할 수 없음) 이 생성된 토큰으로 리포지토리를 복제해야 합니다.

액세스 토큰 생성:

: github
]> [ Settings ]> [ Token ]> [ ]> [ Developer Settings ]> [ Personal Access Token ]

트트: :
[Personal settings)]> [앱 패스워드(App Passwords)]> [앱 패스워드 (create password)]> [앱 패스워드(create app password)]> [개인설정(

저장소를 복제합니다.

github:

$ git clone https://YOUR-USERNAME:GENERATED-TOKEN@github.com/YOUR-USERNAME/YOUR-REPOSITORY

비트 버킷:

git clone https://YOUR-USERNAME@bitbucket.org/YOUR-REPOSITORY

생성된 토큰을 입력하라는 메시지가 표시됩니다.

git config --global core.askpass

동일한 방법으로 복제하기 전에 먼저 이 작업을 실행하십시오. 수정해야 합니다.

이것은 훌륭한 스택 오버플로우 질문입니다.답변은 매우 유익했습니다.최근에 부딪힌 귀찮은 문제를 해결할 수 있었습니다.

제가 일하는 조직은 GitHub이 아닌 제품을 사용하고 있습니다.기본적으로 GitHub의 버전이기 때문에 저장소는 사내에서 완전히 보호됩니다.@coordinate와 비슷한 문제가 발생했습니다.그것은 체크 아웃한 새로운 저장소에 패스워드가 필요하기 때문입니다.내 자격 증명이 모든 프로젝트에 대해 글로벌하게 저장되었기 때문에 자격 증명이 손실된 이유를 알 수 없습니다.

즉, 다음 GIT 명령어(사용자명만 입력)를 입력할 수 있었습니다.그 후 Git의 Credential Manager에 의해 패스워드를 입력하도록 요구받았고, 그 후 저장할 수 있었습니다.

git clone https://user@code.domain.org/git/[organization]/[team]/[repository.git]

메모: 괄호로 묶은 디렉토리 서브패스는 단순히 내부 참조를 참조하며, 사용자에 따라 달라집니다.

임의의 종류의 credential-helper에 credential이 저장되어 있지만 credential 도우미가 글로벌하게 활성화되도록 설정되어 있지 않은 경우 다음과 같이 복제할 수 있습니다.

git clone https://git.example.com/ns/repo.git --config=credential.helper=store

그러면 복제 전에 credential-helper 설정이 로컬(새로운 repo 전용)로 설정됩니다.

언급URL : https://stackoverflow.com/questions/10054318/how-do-i-provide-a-username-and-password-when-running-git-clone-gitremote-git