在Git for Windows中使用GIT_SSH_COMMAND

Vic*_*r N 8 git git-bash

我现在正在使用Git for Windows 2.x的第四版候选版本,并在shell中使用GIT_SSH_COMMAND来避免SSH的主机验证.在Git Bash中我写了这样的东西:

$ GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git push origin master
Run Code Online (Sandbox Code Playgroud)

如何在Windows cmd中执行此类操作?在任何地方找不到任何答案.

Von*_*onC 10

您不必再在Windows中设置环境变量.

使用Git 2.10+(Q3 2016),你也必须设置一个可能配置GIT_SSH_COMMAND,这比环境变量更容易(并且可以针对特定的回购全局设置,或局部)

提交3c8ede3通过(2016年6月26日)阮泰玉维战(pclouds).
(由Junio C gitsterHamano合并- -提交dc21164,2016年7月19日)

添加了一个新的配置变量,core.sshCommand以指定每个存储库使用GIT_SSH_COMMAND的值.

core.sshCommand:
Run Code Online (Sandbox Code Playgroud)

如果这个变量被设置,git fetch并且git push将使用指定的命令,而不是ssh当他们需要连接到远程系统.
该命令与GIT_SSH_COMMAND环境变量的格式相同,并在设置环境变量时被覆盖.

这意味着git push可以是:

cd /path/to/my/repo
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' 
# later on
git push origin master
Run Code Online (Sandbox Code Playgroud)

使用Git 2.16(2018年第一季度),您将有一个新的机制来升级现有的线路协议,并证明它可以与旧版本的Git一起使用而不会损害它们.

请参阅提交6464679(2017年10月16日),并由Jonathan Tan()提交0cd8328(2017年9月26日). 请参阅提交94b8ae5,提交3c88ebd,提交19113a2,提交0c2f0d2,提交2609043,提交aa9bab2,提交dfe422d,提交373d70e,提交5d2124b(2017年10月16日)作者:Brandon Williams().(由Junio C Hamano合并- -提交4c6dad0,2017年12月6日)jhowtan
mbrandonw
gitster

ssh:介绍一个simple'ssh变种

使用' ssh'transport时,' -o'选项用于指定应在远程端设置的环境变量.
这允许Git在联系服务器时发送附加信息,通过' GIT_PROTOCOL'环境变量请求使用不同的协议版本,如:" -o SendEnv=GIT_PROTOCOL".

不幸的是,并非所有ssh变体都支持将环境变量发送到远程端.
为了解决这个问题,只对-o符合OpenSSH的ssh变体使用' '选项.
这是通过检查ssh命令的基名是' ssh'还是重写ssh变量ssh'(通过ssh.variant配置)来完成的.

其他选项,如' -p'和' -P',用于指定要使用的特定端口,或' -4'和' -6',用于指示应使用IPV4或IPV6地址,所有ssh变体也可能不支持.

目前,如果ssh命令的basename不是' plink'或' tortoiseplink',Git假定该命令是OpenSSH变体.
由于用户配置的ssh命令可能不符合OpenSSH,因此simple如果命令的基本名称与Git已知的变体不匹配,请加强此约束并假设' '的变体.
新的ssh变体' simple'只有主机和命令执行([username@]host命令)作为参数传递给ssh命令.


Vic*_*r N 4

答案如下:

set GIT_SSH_COMMAND=ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no & git push origin master
Run Code Online (Sandbox Code Playgroud)

  • @Matt - 你在Windows上吗?& 符号连接 Windows shell 命令,在 Linux 上,您可以使用行终止符(分号)进行相同的操作。 (2认同)