我试图在git clone
不使用ssh检查存储库主机密钥的情况下运行。我可以这样从ssh做到这一点:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
有什么办法可以将相同的ssh选项传递给git clone命令?
编辑:有一个限制,我不能修改~/.ssh/config
该机器上的任何其他文件。
我试图在git clone
不使用ssh检查存储库主机密钥的情况下运行。我可以这样从ssh做到这一点:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
有什么办法可以将相同的ssh选项传递给git clone命令?
编辑:有一个限制,我不能修改~/.ssh/config
该机器上的任何其他文件。
Answers:
将它们添加到您的~/.ssh/config
:
Host host
HostName host
User user
SshOption1 Value1
SshOption2 Value2
该Host
条目是您将在命令行上指定的,并且HostName
是真实的主机名。它们可以相同,或者Host
条目可以是别名。User
如果您未user@
在命令行上指定,则使用该条目。
如果必须在命令行上配置它,请将GIT_SSH
环境变量设置为指向包含选项的脚本。
GIT_SSH
环境变量。
最近发布的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
,并由外壳程序解释,该外壳程序允许包含其他参数。
git clone
还是代码正确?
指定不同键的另一个选项是git config core.sshCommand
git 2.10 +(2016年第三季度)。
见提交3c8ede3通过(2016年6月26日)阮泰玉维战(pclouds
)。
(通过合并JUNIOÇ滨野- gitster
-在提交dc21164 7月19日2016)
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
如果要将其应用于所有存储库,如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
我在上面提到的很好用。已投票。
通过在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
然后再试一次。