将SSH选项传递给git clone
我试图运行没有SSH检查存储库主机的密钥的git clone
。 我可以这样做,从SSH:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
有没有办法将相同的SSH选项传递给git clone命令?
编辑:有一个限制,我不能修改~/.ssh/config
或该机器上的任何其他文件。
将它们添加到你的~/.ssh/config
:
Host host HostName host User user SshOption1 Value1 SshOption2 Value2
Host
条目是您要在命令行中指定的内容, HostName
是真实的主机名。 它们可以是相同的,或者Host
条目可以是别名。 如果您不在命令行中指定user@
,则使用User
条目。
如果您必须在命令行上configuration它,请将GIT_SSH
环境variables设置为指向其中包含选项的脚本。
最近发布的git 2.3支持一个新的variables“GIT_SSH_COMMAND”,它可以用来定义一个带有参数的命令。
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
$GIT_SSH_COMMAND
优先于$GIT_SSH
,并由shell解释,允许包含额外的参数。
这里是一个棘手的例子,如何通过使用GIT_SSHvariables传递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
注:上面的行是terminal命令行,你应该粘贴到你的terminal。 它会创build一个文件ssh ,使其可执行并执行它。
如果你想通过私钥的select,请检查如何告诉git使用哪个私钥? 。
指定不同的键的另一个选项是git config core.sshCommand
与git 2.10+(Q3 2016)
这是Boris 回答中描述的环境variables的替代)
参见NguyễnTháiNgọcDuy( pclouds
)的 commit 3c8ede3 (2016年6月26日) 。
(由Junio C gitster
合并- gitster
– in commit dc21164 ,2016年7月19日)
已经添加了一个新的configurationvariables
core.sshCommand
来指定GIT_SSH_COMMAND为每个存储库使用的值。与
$GIT_ASKPASS
或$GIT_PROXY_COMMAND
类似,我们也从configuration文件中读取,然后回到$GIT_SSH_COMMAND
。这对于select不同的私钥来定位同一主机(例如github)
core.sshCommand:
如果设置了这个variables,当他们需要连接到远程系统时,
git fetch
和git push
会使用指定的命令而不是ssh
。
该命令与GIT_SSH_COMMAND
环境variables的forms相同,并且在GIT_SSH_COMMAND
环境variables时被覆盖。
这意味着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添加注释时使用全局configuration
git config --global core.sshCommand ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
我认为更新git版本> = 2.3并使用GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
是赌注选项,但如果不可能,@ josh-李先生给了一个很好的select,但请,更新你的答案缩进SSHconfiguration文件。
Host host HostName host StrictHostKeyChecking no UserKnownHostsFile /dev/null