itsource

git clone에 ssh 옵션 전달 중

mycopycode 2023. 8. 20. 10:47
반응형

git clone에 ssh 옵션 전달 중

도망치려고 합니다.git cloneSSH가 리포지토리 호스트의 키를 확인하지 않고 있습니다.SSH에서 그렇게 할 수 있습니다.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host

git clone 명령에 동일한 ssh 옵션을 전달할 수 있는 방법이 있습니까?

편집: 수정할 수 없는 제한이 있습니다.~/.ssh/config또는 해당 컴퓨터의 다른 파일.

최근 릴리스된 Git 2.3은 매개 변수가 있는 명령을 정의하는 데 사용할 수 있는 새로운 변수 "GIT_SSH_COMMAND"를 지원합니다.

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host

$GIT_SSH_COMMAND보다 우선함$GIT_SSH셸에 의해 해석되므로 추가 인수를 포함할 수 있습니다.

에 추가합니다.~/.ssh/config:

Host host
    HostName host
    User user
    SshOption1 Value1
    SshOption2 Value2

Host항목은 명령줄에서 지정할 항목이며,HostName는 실제 호스트 이름입니다.그들은 같을 수도 있고, 아니면.Host항목은 별칭이 될 수 있습니다.User항목은 지정하지 않은 경우 사용됩니다.user@명령행에서.

명령줄에서 이 설정을 구성해야 하는 경우GIT_SSH옵션이 포함된 스크립트를 가리키는 환경 변수입니다.

다른 키를 지정하는 다른 옵션은 다음과 같습니다.git config core.sshCommandgit 2.10 + (2016년 3분기)와 함께.

이는 Boris의 답변설명된 환경 변수에 대한 대안입니다.)

Nguyễn Thai Ngọc Duy()pclouds의 커밋 3c8ede3(2016년 6월 26일) 참조.
(주니오 C 하마노에 의해 합병 -- -- 2016년 7월 19일 커밋 dc21164에서)

새 구성 변수core.sshCommand저장소별로 사용할 GIT_SSH_COMMAND의 값을 지정하기 위해 추가되었습니다.

와 유사한$GIT_ASKPASS또는$GIT_PROXY_COMMAND우리는 또한 구성 파일에서 먼저 읽은 후 다시 아래로 이동합니다.$GIT_SSH_COMMAND.

동일한 호스트(예: github)를 대상으로 하는 다른 개인 키를 선택하는 데 유용합니다.

core.sshCommand:

이 변수가 설정되면,git fetch그리고.git push대신 지정된 명령을 사용합니다.ssh원격 시스템에 연결해야 하는 경우.
명령의 형식은 다음과 같습니다.GIT_SSH_COMMAND환경 변수가 설정되면 재정의됩니다.

그것은 의미합니다.git clone다음이 될 수 있습니다.

cd /path/to/my/repo
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' 
# later on
git clone host:repo.git

사용자 1300959가 설명에 추가한 것처럼 모든 리포지토리에 를 적용하려면 글로벌 구성을 사용합니다.

git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

시스템 수준 설정에 영향을 미치지 않는 리포지토리 수준 구성

이미 사용 가능한 답변을 통합하여 아래 단계를 선택합니다.이렇게 하면 시스템 수준에서 구성 변경이 영향을 미치지 않고 작업 중인 리포지토리에만 영향을 줍니다.공유 Bamboo 에이전트에서 스크립트를 실행해야 하기 때문에 이 작업이 필요합니다.

합니다. 1. 저장소를 복제합니다.GIT_SSH_COMMAND접근.

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone ssh://url

2.복제가 완료되면 리포지토리 디렉토리로 이동합니다.

cd repo-dir

3.트세core.sshCommand모든 향후 통화를 일반적인 git 명령으로 실행할 수 있지만 내부적으로 제공된 git 옵션을 사용할 수 있도록 구성합니다.

git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

다음은 GIT_SSH 변수를 사용하여 ssh 인수를 전달하는 까다로운 예입니다.

$ echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH="$PWD/ssh" git clone user@host

참고: 위의 줄은 터미널에 붙여넣어야 하는 터미널 명령줄입니다.파일 ssh를 생성하고 실행 파일로 만들고 실행합니다.

개인 키 옵션을 전달하려면 사용할 개인 키를 지정하는 방법을 선택하십시오.

가 >= >= 2.3 버전을 사용한다고 합니다.GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host베팅 옵션이지만, 가능하지 않으면 @http-lee가 좋은 옵션을 제공했지만, ssh 구성 파일을 식별하는 답변을 업데이트하십시오.

Host host
    HostName host
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

더 안전한 방법은 다음과 같습니다.

git config --global core.sshCommand 'ssh -o StrictHostKeyChecking=accept-new'

은 것은보안다니합전다이다보다 안전합니다.StrictHostKeyChecking=noaccept-new이전에 한 번도 본 적이 없는 키가 아닌 변경된 것으로 알고 있는 키에 대한 오류가 계속 발생합니다.no모든 검사를 비활성화합니다.

일회성 명령의 경우 다음을 사용합니다.

git -c core.sshCommand='ssh -o StrictHostKeyChecking=accept-new' clone ...

이 문제는 Window machine에서 다음 단계를 수행하여 해결되었습니다.

  • C: 아래에 구성 파일 생성:\Users\username.ssh 폴더.

  • 구성 파일에 다음 행을 추가합니다.

    host <HOST>
    hostname <HOSTNAME>
    user <USER_NAME>
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    port <PORT_NUMBER>
    KexAlgorithms +diffie-hellman-group1-sha1
    
  • 다시 시도합니다.

언급URL : https://stackoverflow.com/questions/7772190/passing-ssh-options-to-git-clone

반응형