使用git 2.10+(2016年第三季度:2016年9月2日发布),您可以为git_SSH_COMMAND设置配置(而不仅仅是Rober Jack Will的回答中描述的环境变量)
参见Nguy的承诺书(2016年6月26日)ễn Thái Ng先生ọc杜伊(pclouds)。(2016年7月19日,Junio C Hamano--gitster在提交dc21164中合并)
新的配置变量core.shCommand已添加到指定每个存储库要使用的GIT_SSH_COMMAND值。
core.sshCommand:
如果设置了此变量,gitfetch和gitpush将在需要连接到远程系统时使用指定的命令而不是ssh。该命令的格式与GIT_SSH_command环境变量的格式相同,并且在设置环境变量时被覆盖。
这意味着git pull可以是:
cd /path/to/my/repo/already/cloned
git config core.sshCommand 'ssh -i private_key_file'
# later on
git pull
您甚至可以只为一个命令(如gitclone)设置它:
git -c core.sshCommand="ssh -i private_key_file" clone host:repo.git
这比设置GIT_SSH_COMMAND环境变量更容易,正如Mátyás Kuti Kreszács所指出的,在Windows上
set "GIT_SSH_COMMAND=ssh -i private_key_file"
对于所有这些命令,可以添加-o IdentitesOnly=yes以将SSH限制为指定的私钥/公钥:
git config core.sshCommand 'ssh -i private_key_file -o IdentitiesOnly=yes'
# or
git -c core.sshCommand="ssh -i private_key_file -o IdentitiesOnly=yes" clone host:repo.git
# or
set "GIT_SSH_COMMAND=ssh -i private_key_file -o IdentitiesOnly=yes"
gsullins在注释中建议将以下别名添加到.zshrc中:
alias git.key1="git config core.sshCommand 'ssh -i <absolute path to private key>'"