繁体   English   中英

Git:使用密钥文件通过ssh访问远程存储库,但不使用〜/ .ssh / config

[英]Git: access a remote repository over ssh using a key file but without using ~/.ssh/config

是否可以使用ssh和身份文件(使用私钥)访问( fetch / push )远程存储库,而无需在文件~/.ssh/config添加条目,例如:

Host tingle
  HostName 111.222.333.444
  User git
  IdentityFile c/tmp/my_id_rsa

配置~/.ssh/config文件时一切正常。 但是我们有一个脚本,它从远程仓库克隆,检出,开始测试,提交结果并推送它们。 该脚本需要在任何计算机上运行,​​而无需触及ssh配置文件。

您可以使用变量$GIT_SSH (请参阅文档 )来设置调用的程序而不是ssh。

这样你就可以,比如做GIT_SSH=/my/own/ssh git clone https://my.own/repo.git

根据自己的需要调整/my/own/ssh的内容,例如:

#!/bin/bash
# Wrapper for ssh, to use identity file and known hosts file
exec /usr/bin/ssh -i /my/own/identity_file-o UserKnownHostsFile=/my/own/hosts.file "$@"

据我所知,这是目前唯一的方法,没有相当不整齐的路径操作。

您可以覆盖$GIT_SSH环境变量以使用您自己的私钥:

首先,创建一个包装器脚本。 假设我们称之为gitssh.sh

#!/bin/bash
ssh -i /path/to/mykey "$@"

然后,将$GIT_SSH指向它:

export GIT_SSH=/path/to/gitssh.sh

现在,每当你在ssh上运行git命令时,它都将被这个脚本替换,并引用你的密钥。

以下应该做的伎俩

GIT_SSH_COMMAND="ssh -i c/tmp/my_id_rsa" git push

这允许您向ssh执行添加参数,而无需额外的脚本文件。

根据您的脚本,您可以通过在实际执行git之前定义和导出环境变量GIT_SSH_COMMAND ,或者使用if等,以便在与tingle进行通信时仅使用它

在配置文件中,您也提到了用户和主机。 这应该已经是git远程定义的一部分。 如果仍需要覆盖它,可以将它们添加到上面的命令定义中。

一句话,上面的命令没有检查git实际调用了哪个主机。 但是,如果你绝望,你可以尝试用这个“技巧”来构建一个内联shell脚本,它检查主机名并模仿配置文件主机限制;-)。

作为一个GIT_SSH_COMMAND="bash -c \\"if [ \\\\\\"$1\\\\\\" = \\\\\\"user@host\\\\\\" ] ; then ssh -ic/tmp/my_id_rsa $@ ; else ssh $@ ; fi \\" -- " git push可能如下所示: GIT_SSH_COMMAND="bash -c \\"if [ \\\\\\"$1\\\\\\" = \\\\\\"user@host\\\\\\" ] ; then ssh -ic/tmp/my_id_rsa $@ ; else ssh $@ ; fi \\" -- " git push GIT_SSH_COMMAND="bash -c \\"if [ \\\\\\"$1\\\\\\" = \\\\\\"user@host\\\\\\" ] ; then ssh -ic/tmp/my_id_rsa $@ ; else ssh $@ ; fi \\" -- " git push

我没有测试这个并且注意引用;-)。 这是绝望的。

如果您想使用自定义ssh密钥 ,可以尝试使用:

ssh-agent bash -c 'ssh-add /path/to/your/id_rsa; git clone git@github.com:repo'

这样您就不需要编写/编辑任何配置文件或修改您的环境。

您可以使用.pem文件创建与git服务器的安全连接

ssh -i“yourfile.pem”yourHostName.com

.pem就像一个具有密钥信息的证书文件。

  • 第一步是生成密钥对和PEM文件。
  • 下一步是使用SSH在第一次使用密码在命令行中将证书上载到远程服务器。
  • 最后一步,在不使用密码的情况下测试连接客户端到服务器

查看http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt 你可以在这里找到这个方法的更多细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM