[windows] Windows에서 Git Bash를 시작할 때 SSH 에이전트 실행

git bash를 사용하고 있습니다. 나는 사용해야한다

eval `ssh-agent.exe`
ssh-add /my/ssh/location/

새로운 git bash를 시작할 때마다.

ssh 에이전트를 영구적으로 설정하는 방법이 있습니까? 아니면 창에 ssh 키를 관리하는 좋은 방법이 있습니까?

나는 새로운 사람입니다, 제발 자세한 자습서를 해주세요, 감사합니다!



답변

자식 강타 세션에서, 당신은에 스크립트를 추가 할 수 있습니다 ~/.profile또는 ~/.bashrc( ~일반적으로 설정되어%USERPROFILE% 출시 말했다 세션의 순서를 자동을) ssh-agent. 파일이 존재하지 않으면 작성하십시오.

이것이 바로 ” SSH 키 비밀번호 문구 작업 “에서 GitHub가 설명한 것입니다 .

이 기사의 ” Git for Windows에서 ssh-agent 자동 실행 “섹션에는 에이전트가 실행 중인지 여부를 확인하는 강력한 스크립트가 있습니다. 아래는 스 니펫입니다. 전체 솔루션은 GitHub 기사를 참조하십시오.

# This is just a snippet. See the article above.
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

기타 자료 :

ssh-agent가 git run with windows command shell에서 작동하도록하기 “는 비슷한 스크립트를 가지고 있지만, 더 강력하고 최신 인 위의 GitHub 기사를 주로 참조 할 것입니다.


답변

추신 :이 지침은 Windows 10 Linux Subsystem에서 열린 Bash 셸과 관련이 있으며 Windows에서 Ubuntu의 Bash를 사용하여 Windows에서 생성 된 sym-linking SSH 키에 대해서는 언급하지 않습니다

1) 다음을 추가 하여 .bashrc 를 업데이트하십시오 .

# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"

function start_agent {
    echo "Initializing new SSH agent..."
    touch $SSH_ENV
    chmod 600 "${SSH_ENV}"
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    kill -0 $SSH_AGENT_PID 2>/dev/null || {
        start_agent
    }
else
    start_agent
fi

2) 그런 다음 실행 $ source ~/.bashrc하여 구성을 다시로드하십시오.

위의 단계는 https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch 에서 가져 왔습니다.

3) SSH 구성 파일이 없으면 작성하십시오. 새 명령을 작성하려면 다음 명령을 사용하십시오..ssh$ touch config

4) 다음에 추가 ~/.ssh/config

Host github.com-<YOUR_GITHUB_USERNAME>
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes


Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes

<More hosts and github configs can be added in similar manner mentioned above>

5) command를 사용하여 SSH 에이전트에 키를 추가 $ ssh-add ~/.ssh/id_work_gmail하면 ssh를 사용하여 github 계정 또는 원격 호스트에 연결할 수 있어야합니다. 예를 들어 위의 코드 예제와 관련하여 :

$ ssh github.com-<YOUR_GITHUB_USERNAME>

또는

$ ssh <USER>@csexperimental.abc.com

SSH 에이전트에이 키 추가는 한 번만 수행해야합니다.

6) 이제 Windows Linux Subsystem에서 Bash 세션에서 로그 아웃하십시오. 즉, 모든 Bash 콘솔을 다시 종료하고 새 콘솔을 다시 시작한 다음 SSH 구성 파일에 구성된대로 Github 호스트 또는 다른 호스트에 SSH를 시도하십시오. 단계.

노트 :

감사.


답변

이것을 달성하는 가장 부드러운 방법은 Pageant를 SSH 에이전트 및 plink로 사용하는 것입니다.

원격에서 사용되는 호스트 이름에 대해 퍼티 세션을 구성해야합니다.

또한 putty와 같은 사이트에서 다운로드 할 수있는 plink.exe가 필요합니다.

그리고 키를로드 한 상태로 실행중인 Pageant가 필요합니다. 로그인 할 때 SSH 키를로드하는 시작 폴더에 미인에 대한 바로 가기가 있습니다.

git-scm을 설치할 때 OpenSSH 대신 거북이 / plink를 사용하도록 지정할 수 있습니다.

결과적으로 암호문에 도전하지 않고 git-bash를 열고 푸시 / 풀을 할 수 있습니다.

미인 대회에 키가로드되면 퍼티 및 WinSCP 세션에도 동일하게 적용됩니다. 그것은 인생을 훨씬 더 쉽고 안전하게 만듭니다.


답변

해결 방법으로 Windows에서 퍼티를 사용하는 것을 좋아하지 않기 때문에 매우 간단한 유틸리티 ssh-agent-wrapper를 만들었습니다 . .ssh 폴더를 스캔하고 모든 키를 에이전트에 추가합니다. 작동하려면 Windows 시작 폴더에 넣으면됩니다.

가정 :

  • 경로의 ssh 에이전트
  • 경로에 shh-add (git를 설치할 때 “RED”옵션을 선택하여)
  • 개인 키는 % USERPROFILE % /. ssh 폴더에 있습니다.
  • 개인 키 이름은 id로 시작합니다 (예 : id_rsa)

답변

나는 이것이 PC 멍청한 놈이며 명백한 것을 놓치고 있기 때문에 최선의 대답을 기반으로 작동하도록 할 수 없었습니다. 그러나 FYI는 저와 같은 누군가에게 도움이되는 경우를 대비하여 마지막으로 작동 한 것은 여기 링크 중 하나를 통해 이루어 졌습니다 (답변에서 참조). 이것은 단순히 다음을 내 것에 붙여 넣는 것과 관련이 있습니다 .bash_profile.

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

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

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

아마도 이상한 것으로 구성되었지만 my .profile또는에 추가했을 때 성공하지 못했습니다 .bashrc. 내가 겪었던 또 다른 실제 과제는이 컴퓨터의 관리자가 아니며 IT의 승인을받지 않고 환경 변수를 변경할 수 없으므로 액세스 할 수없는 사람들을위한 솔루션입니다.

git bash를 열 때 ssh 비밀번호를 묻는 메시지가 표시되면 작동한다는 것을 알고 있습니다. 할렐루야가 마침내 효과가있었습니다.


답변

이것을 ~ / .bashrc (또는 그 소스 파일)에 넣으면 쉘마다 불필요하게 여러 번 실행되는 것을 막을 수 있습니다.

if [ -z "$SSH_AGENT_PID" ]; then
        eval `ssh-agent -s`
fi

그런 다음 ~ / .ssh / config에 “AddKeysToAgent yes”를 추가하십시오.

Host *
    AddKeysToAgent yes

일반적으로 서버에 ssh (또는 git pull)를 사용하면 세션 당 한 번만 암호 / 암호를 묻는 메시지가 표시됩니다.


답변

~ 디렉토리에 새 .bashrc 파일을 만듭니다 .

bash를 시작할 때마다 실행할 명령을 넣을 수 있습니다.