git clone
저장소 호스트의 키를 확인하는 ssh없이 실행하려고합니다 . 다음과 같이 ssh에서 할 수 있습니다.
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
git clone 명령에 동일한 ssh 옵션을 전달하는 방법이 있습니까?
편집 : ~/.ssh/config
해당 컴퓨터에서 수정할 수없는 제한 이나 다른 파일이 있습니다.
git clone
저장소 호스트의 키를 확인하는 ssh없이 실행하려고합니다 . 다음과 같이 ssh에서 할 수 있습니다.
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
git clone 명령에 동일한 ssh 옵션을 전달하는 방법이 있습니까?
편집 : ~/.ssh/config
해당 컴퓨터에서 수정할 수없는 제한 이나 다른 파일이 있습니다.
답변:
다음 항목에 추가하십시오 ~/.ssh/config
.
Host host
HostName host
User user
SshOption1 Value1
SshOption2 Value2
Host
항목은 명령 줄에서 지정하는 것입니다 무엇이며,이 HostName
실제 호스트 이름입니다. 동일하거나 Host
항목이 별명 일 수 있습니다. User
지정하지 않는 경우 항목은 사용되는 user@
명령 줄에.
명령 줄에서이를 구성해야하는 경우 GIT_SSH
옵션이 포함 된 스크립트를 가리 키도록 환경 변수를 설정 합니다.
GIT_SSH
환경 변수를 사용하십시오 .
최근에 출시 된 git 2.3은 명령어 WITH 매개 변수를 정의하는 데 사용할 수있는 새로운 변수 "GIT_SSH_COMMAND"를 지원합니다.
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
$GIT_SSH_COMMAND
는 우선권을$GIT_SSH
가지며 추가 인수를 포함 할 수있는 쉘에 의해 해석됩니다.
git clone
아니면 코드가 맞습니까?
다른 키를 지정하기 위해 만들어진 또 다른 옵션은 git config core.sshCommand
git 2.10 + (Q3 2016)입니다.
이것은 Boris 의 답변에 설명 된 환경 변수의 대안입니다. )
참조 3c8ede3 커밋 에 의해 (2016년 6월 26일를) 응웬 타이 응옥 두이 ( pclouds
) .
(의해 병합 - Junio C 하마노 gitster
- 에 dc21164 커밋 2,016 7 월를 19)
core.sshCommand
저장소 당 사용할 GIT_SSH_COMMAND 값을 지정하기 위해 새 구성 변수 가 추가되었습니다.유사
$GIT_ASKPASS
또는$GIT_PROXY_COMMAND
, 우리는 또한 config 파일에서 읽을 먼저 다시 가을$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
당신이 그것을 적용 할 경우 모두 같은 REPOS user1300959가 추가 코멘트에 , 당신은 글로벌 구성을 사용합니다.
git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
git clone
이 경우 git ssh 명령을 전역 적으로 구성 할 수 있습니다.git config --global core.sshCommand ...
다음은 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 파일을 생성 하고 실행 가능하게 만들고 실행합니다.
개인 키 옵션을 전달하려면 사용할 개인 키를 git에 알리는 방법을 확인하십시오 . .
$*
와 "$@"
작업에 보인다. "$@"
다른 하나는 더 이상 사용되지 않는 것처럼 보이기 때문에 일반적으로를 사용합니다. $*
이 경우 선호하는 이유가 있습니까?
시스템 수준 설정에 영향을주지 않는 저장소 수준 구성
이미 사용 가능한 답변을 통합하여 아래 단계를 선택합니다. 이렇게하면 구성 변경이 시스템 수준에서 영향을받지 않고 작업중인 저장소에만 영향을줍니다. 내 경우에는 공유 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'
core.sshCommand
위에서 언급 한,의 좋은 사용 . 찬성.
나는 버전> = 2.3으로 git을 업데이트하고 사용하는 GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
것이 내기 옵션 이라고 생각 하지만 가능하지 않은 경우 @ josh-lee가 좋은 옵션을 제공했지만 ssh 구성 파일을 들여 쓰기하여 답변을 업데이트하십시오.
Host host
HostName host
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
이 문제는 Window 컴퓨터에서 다음 단계를 수행하여 수정되었습니다.
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
그런 다음 다시 시도하십시오.