UFO ET IT

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

ufoet 2023. 4. 8. 14:27
반응형

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

저는 git bash를 사용하고 있습니다.사용해야 합니다.

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

매번 새로운 Git Bash를 시작할 때마다.

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

새로 온 사람인데, 자세한 튜토리얼을 부탁해요, 고마워요!

: 2013년 ★★★★git bash스크립트를 할 수 .~/.profile ★★★★★★★★★★★★★★★★★」~/.bashrc(통상은 로 설정되어 있습니다).이 세션을 자동적으로 기동하기 위해서,ssh-agent.
파일이 존재하지 않는 경우는, 작성하기만 하면 됩니다.

이것이 GitHub이 "SSH암호 사용"에서 설명한 것입니다.

이 문서의 "Windows용 Git에서 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

기타 자원:

"Getting ssh-agent to windows command shell"은 유사한 스크립트를 가지고 있지만, 저는 위의 GitHub 기사를 주로 참조합니다.이 문서는 보다 강력하고 최신입니다.


hardsetting 코멘트에 추가합니다(2018년):

셸을 열지 않고 처음 필요할 때 패스프레이즈를 입력하는 경우 가장 깔끔한 방법은 다음과 같습니다.

실행 중인 것을 하지 않아도 ssh-add.


Tao코멘트에 다음과 같이 덧붙입니다(2022년).

(를 들어) 다른 답변에서 @JigneshGohel이 언급한 보다 표준적인 Linux 스크립트가 Windows에서 이 스크립트가 특히 적합한 이유를 알아둘 필요가 있습니다.

하지 않음SSH_AGENT_PID사이그윈이 되다
할 수 , "msys2"에서도 할 수 있습니다.git bash,SSH_AUTH_SOCK어느 환경에서든 경로에 도달할 수 있습니다.
수 때문에 PID PID를 리셋합니다.ssh-agent각 스위치의 프로세스

추신: 이 순서는 Windows 10 Linux 서브시스템에서 열린 Bash 셸의 컨텍스트이며 Windows에서 생성된SSH 키와 Windows Ubuntu의 Bash의 Sym 링크에 대해서는 언급하지 않았습니다.

1) .bashrc에 다음 내용을 추가하여 .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 에서 실시되고 있습니다.

는, SSH 설정 파일을 작성합니다.3 ) SSH 설정 파일, 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). SSH 에이전트에 SSH 키를 추가합니다.$ ssh-add ~/.ssh/id_work_gmail그런 다음 ssh를 사용하여 github 계정 또는 원격 호스트에 연결할 수 있습니다.「 」 「 」 、 「 」 、 「 」

$ ssh github.com-<YOUR_GITHUB_USERNAME>

또는

$ ssh <USER>@csexperimental.abc.com

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

6) 이제 Windows Linux 서브시스템에서 Bash 세션을 로그아웃합니다.즉, 모든 Bash 콘솔을 종료하고 새 콘솔을 다시 시작하여 SSH 구성 파일에 구성된 Github 호스트 또는 기타 호스트에 SSH를 시도하면 별도의 절차 없이 작동합니다.

주의:

  • Bad owner or permissions on ~/.ssh/config 명령어를 합니다.chmod 600 ~/.ssh/config. 레퍼런스 : https://serverfault.com/a/253314/98910

  • 위의 절차를 수행하려면 OpenSSH v7.2 이후가 필요합니다.오래된 것을 사용하고 있는 경우는, https://stackoverflow.com/a/41555393/936494 에 기재되어 있는 순서에 따라서 업그레이드할 수 있습니다.

  • Windows 10 Linux Subsystem SSH-agent의 주요 문제에서도 동일한 세부 정보를 확인할 수 있습니다.

감사해요.

수 것이 에서 GitHub repo의 아래쪽에 있는 GitHub repo는 GitHub repo는 GitHub repo를 사용합니다.C:\Users\tiago\.ssh되어 있는 곳 이 에 config라는 합니다( config ) 。

Host github.com
    HostName github.com
    User your_user_name
    IdentityFile ~/.ssh/your_file_name

그런 다음 Git Bash를 열기만 하면 ssh-agent를 수동으로 시작하고 키를 추가할 필요 없이 푸시할 수 있습니다.

나는 이것을 달성하기 위한 가장 쉬운 방법을 SSH 에이전트와 plink로 Peates를 이용하는 것을 발견했다.

리모트로 사용되는 호스트명에 대해서, 퍼티 세션을 설정할 필요가 있습니다.

플링크도 필요합니다.putty와 같은 사이트에서 다운로드 할 수 있는 exe

그리고 넌 열쇠를 장전하고 미인대회를 뛰어야 해스타트업 폴더에 로그인 시 SSH 키를 로드하는 미인대회 바로가기가 있습니다.

git-scm을 설치할 때 OpenSSH가 아닌 turtle/plink를 사용하도록 지정할 수 있습니다.

그 결과 원하는 시간에 git-bash를 열 수 있고 패스프레이즈에 대한 도전 없이 밀고 당길 수 있습니다.

putty 세션과 WinSCP 세션에서도 키가 로딩되어 있는 경우는 동일합니다.그것은 삶을 훨씬 더 쉽게(그리고 안전하게) 만듭니다.

저는 PC를 너무 잘 다루어서 확실한 것을 놓쳤기 때문에 최선의 답변에 따라서는 이 작업을 수행할 수 없었습니다.참고로 저처럼 어려운 사람에게 도움이 될 수 있는 경우, 드디어 효과가 있었던 것은 여기 링크 중 하나였습니다(답변 참조).이것은 단순히 다음 내용을 제 컴퓨터에 붙이는 것을 포함했습니다..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

뭔가 이상한 설정이 되어 있는 것 같습니다만, 이 설정을 제 컴퓨터에 추가했을 때는 성공하지 못했습니다..profile또는.bashrc또 다른 진짜 과제는 이 컴퓨터의 관리자가 아니기 때문에 IT부문의 승인을 받지 않으면 환경변수를 변경할 수 없다는 것입니다.따라서 이 솔루션은 접속할 수 없는 사용자를 위한 솔루션입니다.

git bash를 열었을 때 ssh 비밀번호를 입력하도록 요구받으면 동작합니다.할렐루야, 드디어 뭔가 먹혔어

이 파일을 ~/.bashrc(또는 여기서 source'd를 취득한 파일)에 넣으면 셸별로 불필요하게 여러 번 실행되지 않습니다.

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

그런 다음 ~/.ssh/config에 "AddKeysToAgent yes"를 추가합니다.

Host *
    AddKeysToAgent yes

ssh는 정상적으로 서버(또는 git pull)에 접속하여 세션당 패스워드/패스프레이즈를 1회만 입력하도록 요구됩니다.

Windows에서 퍼티를 사용하는 것을 좋아하지 않기 때문에 매우 간단한 유틸리티 ssh-agent-wrapper를 만들었습니다.그러면 .ssh 폴더가 스캔되고 에이전트에 모든 키가 추가됩니다.Windows 스타트업 폴더에 저장하기만 하면 동작합니다.

전제 조건:

  • 경로의 ssh-agent
  • 경로에서 shh-add-in-path(git 설치 시 "RED" 옵션 선택)
  • 개인 키는 %USER PROFILE%/.ssh 폴더에 있습니다.
  • 개인 키는 id로 시작합니다(예: id_private).

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

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

스크립트를 작성하고 git 저장소를 만들었습니다.이것에 의해, 이 문제를 해결할 수 있습니다.https://github.com/Cazaimi/boot-github-shell-win

에 의해,열마다, 가 readme 에 됩니다.이것에 의해, 새로운 창이나 탭을 열 때마다, 개인 키가 다음의 장소에 추가됩니다.ssh-agent리모트 git 저장소로 작업하는 경우, 이것에 대해 걱정할 필요가 없습니다.

답변에서 얻은 간단한2개의 스트링 솔루션:

sh, bash 등의 경우:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

csh, tcsh 등의 경우:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

언급URL : https://stackoverflow.com/questions/18404272/running-ssh-agent-when-starting-git-bash-on-windows

반응형