您的位置:首页 > 其它

git免密pull指定ssh密钥文件

2017-11-27 22:39 357 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息