programing

Windows에서 Git Bash를 사용할 때 개인 키를 해독하기 위한 패스워드가 매번 입력되지 않도록 하려면 어떻게 해야 합니까?

lastmoon 2023. 4. 22. 10:02
반응형

Windows에서 Git Bash를 사용할 때 개인 키를 해독하기 위한 패스워드가 매번 입력되지 않도록 하려면 어떻게 해야 합니까?

나는 GIT 개인 저장소에서 다운로드 받는 자동 빌딩 서비스를 가지고 있다.문제는 저장소를 복제하려고 할 때 비밀번호를 입력해야 한다는 것입니다.이는 저장소가 기억되지 않기 때문입니다.따라서 사용자의 조작이 없기 때문에 비밀번호는 영원히 대기합니다.id_rsa.pub에서 강제로 기억하려면 어떻게 해야 하나요?

Windows 사용자의 경우 부팅 로그인하도록 Git Bash 환경을 이렇게 설정합니다.편집하고 있습니다.~/.bashrc 삭제:

eval `ssh-agent`
ssh-add

Git Bash를 시작하면 다음과 같이 됩니다.

Welcome to Git (version 1.7.8-preview20111206)
(etc)
Agent pid 3376
Enter passphrase for /c/Users/starmonkey/.ssh/id_dsa:
Identity added: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)

매번 로그인하지 않고 다른 서버에 ssh할 수 있게 되었습니다.

이 답변에서는 SSH 키 패스프레이즈가 아닌 GitHub 사용자 이름과 비밀번호를 영구적으로 저장하는 방법을 설명합니다.

Windows 에서는, 그냥 실행해 주세요.

$ git config --global credential.helper wincred

즉, 다음에 를 누를 때 평소처럼 사용자 이름과 암호를 입력하지만 Windows 자격 증명에 저장됩니다.그 이후에는 다시 입력할 필요가 없습니다.

와 같이 매번 사용자 이름과 비밀번호를 입력하지 않고 GitHub에 푸시합니다(Windows에서는 Git Bash).

새로운 단말기를 열 때 SSH 패스프레이즈를 입력할 필요는 없습니다.유감스럽게도 스타몽키 솔루션에서는 세션마다 패스워드를 입력해야 합니다.대신 제 안에 이게 있어요..bash_profile 삭제:

# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It's not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

agent_start() {
    (umask 077; ssh-agent >"$env")
    . "$env" >/dev/null
}

if ! agent_is_running; then
    agent_load_env
fi

# If your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

unset env

이렇게 하면 새로운 터미널 세션의 패스프레이즈도 기억됩니다.부팅 후 첫 번째 터미널을 열 때 패스프레이즈를 한 번만 입력하면 됩니다.

제가 이걸 어디서 구했는지 알고 싶습니다. 다른 사람의 작품을 수정한 건데, 어디서 왔는지 기억이 안 나요.익명의 작가님 감사합니다!

업데이트 2019-07-01: 이 모든 것이 필요하지 않다고 생각합니다.저는 현재 이 작업을 지속적으로 수행하고 있습니다..bash_profilefile ssh-agent를 합니다.

eval $(ssh-agent)

후, 그, 는을 합니다.ssh컨피규레이션파일은 다음과 같습니다.

touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo 'AddKeysToAgent yes' >> ~/.ssh/config

질문을 올바르게 이해했다면 이미 빌드 서비스에서 인증된 SSH 키를 사용하고 있는데 모든 클론의 암호를 입력할 필요가 없다고 생각하십니까?

다음 두 가지 방법을 생각할 수 있습니다.

  1. : 에, 해 주세요.ssh-agent타임아웃이 충분히 길어서(-t옵션)을 클릭합니다.그 후 사용ssh-add빌드 서비스를 시작하기 전에 필요한 모든 개인 키를 추가하기 위해 (msysGit에 이러한 키가 있어야 합니다).그래도 모든 암호를 입력해야 하지만 서비스를 시작할 때마다 한 번만 입력해야 합니다.

  2. 패스 프레이즈를 입력할 필요가 전혀 없는 경우는, https://serverfault.com/questions/50775/how-do-i-change-my-private-key-passphrase, 의 설명에 따라서, 항상 SSH 키로부터 패스 프레이즈를 삭제할 수 있습니다.이렇게 하면 비밀번호 프롬프트가 완전히 사라지지만 이전 옵션보다 보안이 더 떨어집니다.

코드를 푸시하려고 했을 때, 다음의 에러가 발생했습니다.

$ git push origin dev

remote: Too many invalid password attempts. Try logging in through the website with your password.
fatal: unable to access 'https://naushadqamar-1@bitbucket.org/xxxx/xxxx-api.git/': The requested URL returned error: 403

몇 시간 동안 조사한 결과 다음 명령을 사용해야 한다는 것을 알게 되었습니다.

$ git config --global credential.helper cache

위의 명령어를 실행한 후 GitHub 사용자 이름과 비밀번호를 입력하라는 프롬프트를 받았습니다.올바른 자격 증명을 제공한 후 코드를 푸시할 수 있습니다.

적절한 솔루션은 다음과 같습니다.

  1. Windows 기본 터미널 cmd를 실행하여 마스터 프로파일의 디렉토리를 가져옵니다.

    echo %USERPROFILE%
    
  2. 위의 디렉토리에서 Git Bash를 실행하여.bashrc명령어로 파일하다

    echo "" > .bashrc
    
  3. 를 엽니다..bashrc마음에 드는 텍스트 에디터로 파일을 작성하고 GitHub 도움말에서 해당 파일에 코드를 붙여넣습니다.

    env=~/.ssh/agent.env
    ...
    COPY WHOLE CODE FROM URL - I can't add it to Stack Overflow because it breaks layout... OMG!
    
  4. Git Bash 를 재기동하면, 패스워드의 입력이 요구됩니다(처음만).패스워드를 다시 사용할 필요가 없습니다.

작성해야 합니다.authorized_keys아래 줄서다.ssh저장소 서버에 연결할 사용자의 폴더입니다.예를 들어, 사용자 이름을 사용한다고 가정합니다.buildservicerepo.server실행할 수 있습니다.

cd ~buidservice
mkdir ./ssh
cat id_rsa.pub >> .ssh/authorized_keys

그리고 다음 사항을 확인해야 합니다.

  1. 거기에 대응하다id_rsa개인 키는 에 표시됩니다.builservice@build.server:~/.shh/id_rsa.

  2. 레포의 지문이요서버는 에 저장됩니다.buildservice@build.server:~/.ssh/known_hosts보통 첫 번째 시도 후에 완료됩니다.ssh에 접속하다repo.server.

언급URL : https://stackoverflow.com/questions/5727555/how-to-prevent-that-the-password-to-decrypt-the-private-key-has-to-be-entered-ev

반응형