git免密pull指定ssh密钥文件

git免密pull指定ssh密钥文件

免密登陆其他机器、获取资源一直是一种非常高效、高度自动化、智能化的方式。技术爱好者不可不知,且最好知行合一。

1、多机共用密钥

在部署时总是希望被部署的服务器上可以免密码执行clone、pull等只读操作。

从不用手动输密码到自动更新。能省多少心啊。。。。:)

当然自动部署可以用github、gitee的post hook功能,也可以用操作系统的定时任务实现。此处不加讨论。

本文着重点在于git pull git@ssh_repo_path时如何指定特定的密钥文件。

因为直接执行pull git@ssh_repo_path是会从~/.ssh/id_rsa读取密钥的。如何指定特定的密钥呢?

为啥要指定特定的密钥啊。。。。。。因为如果我把密钥都做了备份拷贝,那么换一台机器,直接使用相应的密钥就行了,不需要再重新生成密钥、公钥,然后将公钥添加到github等项目中。能省很多事嘞。。。。。

2、思路

  • 利用git的 SSH_COMMAND环境变量来指定特定密钥。
    来一段windows下的cmd脚本
set rsa_path=operation/keygen/id_rsa
git config core.sshCommand "ssh -i %rsa_path% "
git pull git@gitee.com:your_repo.git
这段脚本首先设定密钥的相对路径(相对于git根目录)。然后设置SSH_COMMAND环境变量。然后执行git pull ssh_repo_path指令去更新本地目录。

本人采用的就是此种方式。另外statckoverflow上还有一些别的思路附后。本人没有验证,有兴趣童鞋可以研究其原理并尝试下。

3、其他方式

  • ssh-agent sh -c ‘ssh-add ~/.ssh/id_rsa; git fetch user@host’
  • GIT_SSH_COMMAND

    GIT_SSH_COMMAND=’ssh -i ~/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no’ \
    git clone user@host

  • ~/.ssh/config

Host github.com
  User git
  Hostname github.com
  IdentityFile ~/.ssh/id_rsa
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值