Estou tentando executar git clone
sem ssh verificar a chave do host do repositório. Eu posso fazer isso do ssh assim:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
Existe alguma maneira de passar as mesmas opções de ssh para o comando git clone?
Editar: Há uma restrição que não posso modificar ~/.ssh/config
ou quaisquer outros arquivos nessa máquina.
Respostas:
Adicione-os ao seu
~/.ssh/config
:A
Host
entrada é o que você especificará na linha de comando eHostName
é o verdadeiro nome do host. Eles podem ser iguais ou aHost
entrada pode ser um alias. oUser
entrada é usada se você não especificaruser@
na linha de comando.Se você deve configurar isso na linha de comando, defina a
GIT_SSH
variável de ambiente para apontar para um script com suas opções nele.fonte
GIT_SSH
variável de ambiente.O git 2.3 lançado recentemente suporta uma nova variável "GIT_SSH_COMMAND" que pode ser usada para definir um comando COM parâmetros.
fonte
git clone
ou o código está correto?Outra opção feita para especificar chaves diferentes é
git config core.sshCommand
com git 2.10 + (Q3 2016).Isto é uma alternativa para a variável ambiente descrito em Boris de resposta )
Consulte o commit 3c8ede3 (26 de junho de 2016) de Nguyễn Thái Ngọc Duy (
pclouds
) .(Fundido por Junio C Hamano -
gitster
- no commit dc21164 , 19 de julho de 2016)Isso significa que
git clone
pode ser:Se você quiser aplicar isso a todos os repos, conforme user1300959 adiciona nos comentários , você usaria uma configuração global.
fonte
git clone
- neste caso, você pode querer configurar o comando git ssh globalmente:git config --global core.sshCommand ...
Aqui está um exemplo complicado de como passar os argumentos ssh usando a variável GIT_SSH:
Nota: As linhas acima são as linhas de comando do terminal que você deve colar em seu terminal. Ele irá criar um arquivo ssh , torná-lo executável e executá-lo.
Se você gostaria de passar a opção de chave privada, verifique Como informar ao git qual chave privada usar? .
fonte
$*
e"$@"
parecem funcionar. Normalmente eu uso"$@"
, já que o outro parece obsoleto. Existe uma razão para preferir$*
neste caso?Configuração de nível de repositório sem afetar as configurações de nível de sistema
Consolidando as respostas já disponíveis, estou escolhendo as etapas abaixo. Isso garante que as mudanças na configuração não afetem no nível da máquina, mas apenas no repositório que está sendo trabalhado. Isso é necessário no meu caso, pois meu script precisa ser executado em um agente Bamboo compartilhado.
1.Clone o repositório seguindo a
GIT_SSH_COMMAND
abordagem.2. Uma vez clonado, navegue até o diretório do repositório.
3. Defina a
core.sshCommand
configuração de forma que todas as chamadas futuras possam ser executadas apenas com comandos git como de costume, mas consumindo internamente as opções git fornecidas.fonte
core.sshCommand
que mencionei acima. Votado.Acho que atualizar git para uma versão> = 2.3 e usar
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
é a opção de aposta, mas se não for possível, @ josh-lee deu uma boa opção, mas por favor, atualize sua resposta recuando o arquivo de configuração ssh.fonte
Esse problema foi corrigido seguindo as etapas da máquina Windows: -
Crie o arquivo de configuração na pasta C: \ Users \ username.ssh.
adicione a seguinte linha a um arquivo de configuração.
em seguida, tente novamente.
fonte