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
相关文章推荐
- Github使用gitignore忽略增加指定文件
- git 如何让单个文件回退到指定的版本
- git-忽略指定文件【ubuntu】
- sourceTree git 忽略指定文件
- Git(GitHub) 005 添加SSH密钥 — 解决:Permission denied (publickey) fatal The remote end hung up unexpectedly
- 【转】Git如何Check Out出指定文件或者文件夹
- git 如何让单个文件回退到指定的版本(转)
- git 拉取远程指定分支 pull本地不存在的分支
- 【Git学习笔记】用git pull取回远程仓库某个分支的更新,再与本地的指定分支自动merge【转】
- Git-将指定文件回退到指定版本
- git之使用ssh-add添加密钥
- git .ssh/config 文件配置 修改端口号等
- 使用git pull文件时和本地文件冲突怎么办?
- Git pull 拉取远程内容强制覆盖本地文件
- GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?
- ssh密钥与git
- Github使用gitignore忽略增加指定文件
- 递归删除指定目录下的.git文件
- Git: 更新单个或指定的文件
- Git合并指定文件到另一个分支