Programing

모든 자식 푸시에서 사용자 이름과 비밀번호를 지정하지 않으려면 어떻게합니까?

lottogame 2020. 3. 20. 08:11
반응형

모든 자식 푸시에서 사용자 이름과 비밀번호를 지정하지 않으려면 어떻게합니까?


나는 git push원격 Git 저장소에 내 작품.

모든는 push입력에 저를 묻는 메시지가 표시됩니다 usernamepassword. 푸시 할 때마다 피하고 싶지만 피하지 않도록 구성하는 방법은 무엇입니까?


1. SSH 키 생성

리눅스 / 맥

터미널을 열어 ssh 키를 작성하십시오.

cd ~                 #Your home directory
ssh-keygen -t rsa    #Press enter for all values

Windows의 경우

(커밋 프로그램이 인증서 / 개인 및 공개 ssh 키를 사용할 수있는 경우에만 작동)

  1. Putty Gen을 사용하여 키 생성
  2. 키를 열린 SSH 키로 내보내기

위의 단계에 대한 퍼티 세대에 대한 연습 은 다음과 같습니다.

2. SSH 키를 원격 저장소와 연관 시키십시오.

이 단계는 리모컨 설정 방법에 따라 다릅니다.

  • GitHub 저장소이고 관리자 권한이있는 경우 설정으로 이동하여 'SSH 키 추가'를 클릭하십시오. ~/.ssh/id_rsa.pub'키'라고 표시된 입력란에 내용을 복사합니다 .

  • 저장소가 다른 사람에 의해 관리되는 경우 관리자에게 id_rsa.pub.

  • 원격 저장소가 사용자에 의해 관리되는 경우 다음 명령을 사용할 수 있습니다.

    scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub

3. 원격 URL을 SSH 1 을 지원하는 양식으로 설정하십시오.

위의 단계를 수행 한 후에도 여전히 비밀번호 프롬프트가 표시되면 저장소 URL이 양식인지 확인하십시오.

git+ssh://git@github.com/username/reponame.git

반대로

https://github.com/username/reponame.git

repo URL을 보려면 다음을 실행하십시오.

git remote show origin

다음을 사용하여 URL을 변경할 수 있습니다.

git remote set-url origin git+ssh://git@github.com/username/reponame.git

[1]이 섹션은 Eric P 의 답변을 포함합니다.


Git 리포지토리로 영구적으로 인증

신임 캐싱을 사용하려면 다음 명령을 실행하십시오.

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

캐싱 expire를 지정해야합니다 .

git config --global credential.helper 'cache --timeout 7200'

자격 증명 캐싱을 활성화하면 7200 초 (2 시간) 동안 캐시됩니다 .

참고 : 자격 증명 도우미는 암호화되지 않은 암호를 로컬 디스크에 저장합니다.


SSH 키가 이미 설정되어 있고 여전히 비밀번호 프롬프트가 표시되는 경우 리포지토리 URL이 양식인지 확인하십시오.

git+ssh://git@github.com/username/reponame.git

반대로

https://github.com/username/reponame.git

repo URL을 보려면 다음을 실행하십시오.

git remote show origin

다음과 git remote set-url같이 URL을 변경할 수 있습니다 .

git remote set-url origin git+ssh://git@github.com/username/reponame.git

--repogit push 명령 에는 옵션을 사용하십시오 . 이처럼 :

$ git push --repo https://name:password@bitbucket.org/name/repo.git

무기한 저장

당신이 사용할 수있는 자식-자격 증명 매장을 통해

git config credential.helper store

파일 시스템에 암호화되지 않은 비밀번호저장합니다 .

이 도우미를 사용하면 암호가 디스크에 암호화되지 않고 파일 시스템 권한으로 만 보호됩니다. 이것이 허용 가능한 보안 상충 관계가 아닌 경우 git-credential-cache를 시도하거나 운영 체제에서 제공하는 보안 저장소와 통합되는 도우미를 찾으십시오.

타임 아웃

기본적으로 암호를 15 분 동안 저장 하는 git-credential-cache사용하십시오 .

git config credential.helper cache

다른 시간 초과를 설정하려면 --timeout(여기서 5 분)을 사용 하십시오

git config credential.helper 'cache --timeout=300'

무기한 보안 저장 (OS X 및 Windows)

  • Mac을 사용하는 경우 Git에는 시스템 계정에 연결된 보안 키 체인의 자격 증명을 캐시 하는 "osxkeychain"모드 가 제공됩니다. 이 방법은 디스크에 자격 증명을 저장하지만 만료되지는 않지만 HTTPS 인증서와 Safari 자동 채우기를 저장하는 동일한 시스템으로 암호화됩니다. 명령 행에서 다음을 실행하면이 기능이 활성화됩니다 git config --global credential.helper osxkeychain. 키 체인 앱을 사용하여 키 체인에 자격 증명을 저장해야합니다.
  • Windows를 사용하는 경우 "Git Credential Manager for Windows"라는 도우미를 설치할 수 있습니다 . 이것은 위에서 설명한“osxkeychain”도우미와 비슷하지만 Windows 자격 증명 저장소를 사용하여 중요한 정보를 제어합니다. https://github.com/Microsoft/Git-Credential-Manager-for-Windows 에서 찾을 수 있습니다 . [중점 광산]

https://github.com/org/repo.gitssh 링크 대신 https 링크 ( )를 사용하고있었습니다 .

git@github.com:org/repo.git  

전환하면 문제가 해결되었습니다!


git 클라이언트를 OS 자격 증명 저장소에 연결하십시오. 예를 들어 Windows에서는 자격 증명 도우미를 wincred에 바인딩합니다.

git config --global credential.helper wincred

GitHub에서 https : //를 사용할 때 비밀번호 입력을 건너 뛸 수있는 방법이 있습니까?


위에서 언급 한 솔루션에 대해 몇 가지 지적하고 싶었습니다.

git config credential.helper store

이 후에 암호가 필요한 모든 명령을 사용할 수 있습니다. 밀지 않아도됩니다. (예를 들어 당길 수도 있습니다) 그 후에는 사용자 이름 / 암호를 다시 입력 할 필요가 없습니다.


Windows 운영 체제에서는 이것을 대신 사용하십시오.

https://{Username}:{Password}@github.com/{Username}/{repo}.git

예 :

git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git

git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git

git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git

git push origin master

나는 Pavel이 제안한 대답을 사용했고 그것은 나를 위해 일했다. 리모컨을 다음과 같이 추가하는 동안 차이점이 있습니다.git remote add (alias) https://(name:password)@github.com/(the remote address).git


1 단계 -

아래 명령을 사용하여 Linux 시스템에서 SSH 키를 작성하십시오.

ssh-keygen -t rsa -b 4096 -C "your_email"

암호와 파일 이름을 요구합니다 (기본값은 ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub)

2 단계 -

파일이 생성되면 공개 키 id_rsa.pub를 github 계정 ssh 섹션에 추가하십시오.

3 단계-

컴퓨터에서 아래 명령을 사용하여 개인 키 id_rsa를 ssh-agent에 추가하십시오.

ssh-add ~/.ssh/id_rsa 

4 단계-

이제 아래 명령을 사용하여 원격 URL git@github.com : user_name / repo_name.git을 로컬 git repo에 추가하십시오.

git remote remove origin
git remote add origin git@github.com:user_name/repo_name.git

그게 다야.


Windows에서 내 솔루션 :

  1. 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 "Git Bash Here"를 선택하십시오.
  2. ssh-keygen -t rsa (모든 값을 입력하려면 Enter 키를 누르십시오)
  3. 터미널에서 다음을 확인하십시오. Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
  4. 지정된 파일에서 공개 키를 복사하십시오.
  5. GitHub 프로파일로 이동하십시오 => 설정 => SSH 및 GPG 키 => 새 SSH 키 => SSH 키 붙여 넣기 => 저장

PC가 안전하거나 암호 보안에 신경 쓰지 않으면 매우 간단하게 얻을 수 있습니다. 원격 저장소가 GitHub에 있고 원격 저장소 origin의 로컬 이름 이라고 가정하면 이 명령을 사용하십시오.

git remote set-url --push origin https://<username>:<password>@github.com/<repo>

--push플래그는 이것이의 저장소의 URL을 변경 보장 git push유일한 명령. (원래 게시물에서 묻는 질문은 git push명령에만 해당됩니다. 푸시 작업에만 사용자 이름 + 암호가 필요한 것은 GitHub의 공용 저장소에 대한 일반적인 설정입니다 . GitHub의 개인 저장소에는 끌어 오기 및 가져 오기 작업에도 사용자 이름 + 암호가 필요합니다. 개인 저장소의 경우 --push flag... 를 사용하지 않으려는 경우 ...)

경고 : 다음과 같은 이유로 본질적으로 안전하지 않습니다.

  1. ISP 또는 네트워크 액세스를 기록하는 사람은 URL에서 일반 텍스트로 비밀번호를 쉽게 볼 수 있습니다.

  2. PC에 액세스 할 수있는 사람은 누구나을 사용하여 비밀번호를 볼 수 있습니다 git remote show origin.

그렇기 때문에 SSH 키를 사용해야합니다.

SSH 키조차 완전히 안전하지는 않습니다 . 예를 들어 PC에 액세스 할 수있는 사람은 여전히 ​​푸시를 사용하여 저장소를 손상 시키거나 푸시 커밋으로 코드를 미세하게 변경할 수 있습니다. (푸시 된 모든 커밋은 GitHub에서 명백히 눈에 잘 띄지 만, 누군가가 코드를 비밀리에 변경하고 싶다면 --amend커밋 메시지를 변경하지 않고 이전 커밋을 강제로 푸시 한 다음 강제로 푸시 할 수 있습니다. )

그러나 비밀번호를 공개하는 것이 더 나쁩니다 . 공격자가 사용자 이름 + 암호를 알게되면 자신의 계정에서 사용자를 잠 그거나 계정을 삭제하거나 저장소를 영구적으로 삭제하는 등의 작업을 수행 할 수 있습니다.


또는 단순성 보안 을 위해 URL에 사용자 이름 만 제공 할 수 있으므로 매번 비밀번호를 입력해야 git push하지만 매번 사용자 이름을 제공 할 필요는 없습니다. (나는이 접근법을 매우 좋아합니다. 비밀번호를 입력해야 할 때마다 생각할 수있는 일시 중지 가 발생 git push하므로 git push실수로 할 수 없습니다 .)

git remote set-url --push origin https://<username>@github.com/<repo>

아래 명령을 실행하면 문제가 해결되었습니다.

git config --global credential.helper wincred

아래의 github 설명서를 참조하십시오 :

https://help.github.com/articles/caching-your-github-password-in-git/

내가 아는 한, 두 가지 안전한 방법이 있습니다 : ssh 또는 passwd 키 저장소를 사용하여 암호화 .

SSH

  1. github에 로그인하십시오;
  2. 방문 : https://github.com/settings/keys ;
  3. 새로운 SSH 키;
  4. cat ~/.ssh/id_rsa.pub, 이름과 저장 (당신이 그런 파일이없는 경우에 의해 자신을 위해 하나의 생성, 거기에 붙여 ssh-keygen -t rsa- 방금 입력 한 모든 프롬프트에를);
  5. 로컬 리포지토리로 이동하여 리모컨을 업데이트하십시오 git remote set-url origin git+ssh://git@github.com/username/reponame.git-먼저 확인하여 git remote -v);
  6. 여기 touch t; git add t; git commit -m "test"; git push비밀번호없이 세상 을 즐기기 위해 예를 확인하십시오 .

키 저장소를 사용하여 암호를 암호화

git config --global credential.helper store다른 사람이 언급 한대로 사용하면 암호화되지 않은 암호는 평범한 텍스트로 저장되어 ~/.git-credentials안전하지 않습니다.

시도 암호화

sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

git config --global credential.helper store

이 경우을 사용하고 https://git@github.com/username/reponame.git있습니다.


이 모든 것은 git이 clone / pull / push / fetch 명령에서 파이프를 통해 자격 증명을 보내는 옵션을 제공하지 않기 때문에 발생합니다. credential.helper를 제공하지만 파일 시스템에 저장하거나 데몬 등을 생성합니다. 종종 GIT의 자격 증명은 시스템 수준의 자격 증명이며 git 명령을 호출하는 응용 프로그램에 안전합니다. 실제로 안전하지 않습니다.

여기 내가 해결해야 할 것이 있습니다. 1. 힘내 버전 (git --version)은 1.8.3 이상이어야합니다.

GIT CLONE

복제를 위해 URL을 http : // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}에서 http : // {myuser} : {mypwd} @ {my_repo_ip_address} 형식으로 변경 한 후 "git clone URL"을 사용하십시오. /{myrepo_name.git}

그런 다음 다음 섹션에서와 같이 비밀번호 저장소를 제거하십시오.

퍼깅

자, 이것은 사라 졌을 것입니다.

  1. git remote origin에 암호를 썼습니다. 손상을 보려면 "git remote -v"를 입력하십시오. 비밀번호없이 원격 오리진 URL을 설정하여이를 정정하십시오. "git remote set_url origin http : // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}"
  2. 저장소의 .git / logs에 비밀번호를 작성했습니다. find .git / logs -exec sed -i 's / {my_url_with_pwd} // g'{} \;와 같은 유닉스 명령을 사용하여 pwd의 모든 인스턴스를 교체하십시오. 여기서 {my_url_with_pwd}는 비밀번호가 포함 된 URL입니다. URL에는 슬래시가 있으므로 두 개의 백 슬래시로 이스케이프해야합니다. 예를 들어, URL http : // kris : passs123@192.168.0.1/proj.git- > http : \\ / \\ / kris : passs123@192.168.0.1 \\ / proj.git

애플리케이션이 Java를 사용하여 이러한 명령을 실행하는 경우 런타임 대신 ProcessBuilder를 사용하십시오. 런타임을 사용해야하는 경우 단일 문자열을 인수로 사용하는 것이 아니라 / bin / bash 및 -c를 인수로 사용하여 문자열 배열을 인수로 사용하는 getRunTime (). exec를 사용하십시오.

GIT FETCH / PULL / PUSH

  1. git remote url에서 password를 "git remote set_url origin http : // {myuser} : {mypwd} @ {my_repo_ip_address} / {myrepo_name.git}"로 설정하십시오.
  2. git fetch / push / pull 명령을 실행하십시오. 그러면 비밀번호를 묻는 메시지가 표시되지 않습니다.
  3. 이전 섹션에서와 같이 퍼지를 수행하십시오. 놓치지 마세요.

SSH 개인 키를 설정해야합니다.이 페이지를 검토 할 수 있습니다 .Mac에서 설정을 수행하는 방법은 Linux에서 가이드가 거의 동일해야하며 Windows에서는 MSYS 와 같은 도구가 필요합니다 .


적어도 Windows에서 TortoiseGIT를 사용할 때 SSH 키를 생성하고 간단히 다음을 사용하여 GIT 서버로 전송할 수 있습니다.

> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]

참고 URL : https://stackoverflow.com/questions/8588768/how-do-i-avoid-the-specification-of-the-username-and-password-at-every-git-push

반응형