我试图在git clone没有ssh检查存储库主机密钥的情况下运行.我可以从ssh这样做:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
Run Code Online (Sandbox Code Playgroud)
有没有办法将相同的ssh选项传递给git clone命令?
编辑:我无法修改限制~/.ssh/config或该计算机上的任何其他文件.
Bor*_*ris 129
最近发布的git 2.3支持一个新变量"GIT_SSH_COMMAND",可用于定义命令WITH参数.
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
Run Code Online (Sandbox Code Playgroud)
$GIT_SSH_COMMAND优先于$GIT_SSH,并由shell解释,允许包含其他参数.
Jos*_*Lee 43
将它们添加到您的~/.ssh/config:
Host host
HostName host
User user
SshOption1 Value1
SshOption2 Value2
Run Code Online (Sandbox Code Playgroud)
该Host条目是您在命令行中指定的条目,它HostName是真正的主机名.它们可以是相同的,或者Host条目可以是别名.User如果未user@在命令行中指定,则使用该条目.
如果必须在命令行上进行配置,请将GIT_SSH环境变量设置为指向包含选项的脚本.
Von*_*onC 28
指定不同键的另一个选项是git config core.sshCommand使用git 2.10 +(2016年第3季度).
见提交3c8ede3通过(2016年6月26日)阮泰玉维战(pclouds).
(由Junio C gitsterHamano合并- -在提交dc21164,2016年7月19日)
添加了一个新的配置变量,
core.sshCommand以指定每个存储库使用GIT_SSH_COMMAND的值.与
$GIT_ASKPASSor 类似$GIT_PROXY_COMMAND,我们先从配置文件中读取然后再回到$GIT_SSH_COMMAND.这对于选择针对同一主机的不同私钥非常有用(例如github)
core.sshCommand:
Run Code Online (Sandbox Code Playgroud)
如果这个变量被设置,
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
Run Code Online (Sandbox Code Playgroud)
如果你想申请,对所有回购,作为user1300959增加在评论中,你可以使用一个全局配置.
git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)
ken*_*orb 19
这是一个棘手的例子,如何使用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
Run Code Online (Sandbox Code Playgroud)
注意:上面的行是终端命令行,您应将其粘贴到终端中.它将创建一个文件ssh,使其可执行并执行它.
如果您想传递私钥选项,请查看如何告诉git使用哪个私钥?.
我认为将 git 更新到版本 >= 2.3 并使用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
Run Code Online (Sandbox Code Playgroud)
存储库级别配置,而不会影响系统级别设置
合并已经可用的答案,我选择以下步骤。这样可以确保配置更改不会对计算机级别产生影响,而只会影响正在使用的存储库。就我而言,这是必需的,因为我的脚本需要在共享的Bamboo代理上执行。
1.采用此GIT_SSH_COMMAND方法克隆存储库。
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone ssh://url
Run Code Online (Sandbox Code Playgroud)
2.克隆后,导航到存储库目录。
cd repo-dir
Run Code Online (Sandbox Code Playgroud)
3.设置core.sshCommand配置,以便将来所有的调用都可以像通常一样使用git命令运行,但在内部使用提供的git选项。
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)
更安全的方法是:
git config --global core.sshCommand 'ssh -o StrictHostKeyChecking=accept-new'
Run Code Online (Sandbox Code Playgroud)
这比它更安全,StrictHostKeyChecking=no因为accept-new它仍然会对它知道已更改的键产生错误,但不会对它以前从未见过的键产生错误。no禁用所有检查。
对于一次性命令,请使用:
git -c core.sshCommand='ssh -o StrictHostKeyChecking=accept-new' clone ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52768 次 |
| 最近记录: |