原文作者:@玄冬Wong
git使用中,多个ssh key对应同一个host(主机)时,用不同ssh key(或者说多个用户)进行clone和push的问题。以下操作都是git命令行执行,只要执行正确,TortoiseGit客户端也就自动配置好了。
步骤
1,假设已经生成了两个private key:key-one和key-two(如何生成key:http://aigo.iteye.com/blog/2266163),
然后编辑~/.ssh/config文件,如果没有则新建一个。windows下config文件位置在:C:\Users\当前用户名\.ssh目录下
Host account-one HostName server.example.com Port 22 User user-one IdentityFile ~/.ssh/key-one Host account-two HostName server.example.com Port 22 User user-two IdentityFile ~/.ssh/key-two
.ssh/config参数解释:
Host:远程服务器别名;
HostName:远程服务器地址;
Port:端口,不填则默认是22
User:ssh key对应的用户名(生成ssh key时填写过的)
IdentityFile:ssh key的私钥
2,在客户端上执行git命令:其中repository为远程仓库名名称。
注意:
执行此命令时必须将git-bash当前目录切换到你的本地git仓库,如果你有多个本地git仓库且这些仓库都需要多个用户,那么你得在每个本地仓库下执行下这个命令。
$ git remote add one account-one:repository.git $ git remote add two account-two:repository.git
这个one和two是当前仓库的remote,执行完后可以通过TortoiseGit查看(以下截图是我机器上的,所有和上面命令不是一致的,下图中的res_remote相当于上面 的one和two,alias-resource-dev:Resource.git相当于account-one:repository.git):
3,使用git进行clone和push:
$ git clone one:repositoyr.git master $ git clone two:repositoyr.git master
$ git push one master $ git push two master
如果是用TortoiseGit操作,那么可以选择是哪个remote(以下截图是我机器上的,所有和上面命令不是一致的):
其他事项:
1,key文件路径问题
如果ssh key的位置不是在默认目录下,比如在windows上的D:\test目录下,那么config中配置的路径是这样的(这里的IdentityFile路径名千万不能错误,否则还是始终提示你输入密码,我因为少些了一个字母,查了很长时间。。。如果是在其他机器上配置,记得HostName不要写成127.0.0.1):
Host account-one
HostName server.example.com
User user-one
IdentityFile /d/test/key-one
如果是在默认目录下(“C:\Users\用户名”),也可以使用unix语法格式的路径:
IdentityFile ~/.ssh/id_rsa
最后给一个我本地的配置例子。
因为我git服务器使用的gitblit,默认对ssh端口设置的不是22,所以我配置了Port参数
Host alias-program-cli HostName 127.0.0.1 Port 29418 User user001 IdentityFile /C/Users/Administrator/.ssh/id_rsa Host alias-resouce-dev HostName 127.0.0.1 Port 29418 User res_dev IdentityFile /C/Users/Administrator/.ssh/res_dev_rsa
相关推荐
开发此工具碰到的问题是 开发者碰到同一代码托管平台 来自多个账号的 sshkey 加入开发这 分别加入了 三个 gitee 不同团队的项目 这个时候我们需要配置多个key在 Administrator(当前用户名)/.ssh/ 目录下 需要创建 ...
彻底解决Mac端git clone/push速度太慢的问题,详情请参阅文档。
gitBash 客户端 ssh 服务器远程登陆神器 Git-2.15.0-64-bit
Windows下搭建基于ssh的git服务器
apache 配置git 服务器, 使开发人员能通过http访问git仓库,http,git协议(客户端)只能clone仓库代码,不能写入,写入只能通过ssh协议来提交代码。
搭建基于SSH公钥访问的Git远程仓库。附加安全受限shell配置。
解决git clone时报错问题:sign_and_send_pubkey: signing failed: agent refused operation
git clone 最新版 不多说上资源 好用测试ok git clong git clone 最新版 不多说上资源 好用测试ok git clong
Git push 常见用法,git里面help 可以帮助我们查看。这个文档只是补充。。
支持多个git库clone,提交等常用操作,用户需要根据实际情况微调参数
Git的客户端+服务端Gitblit+Git clone
ssh的互信,git服务器的配置,测试拉代码
Git是目前世界上最先进的分布式版本控制系统。相比于SVN,分布式版本系统的最大好处之一是:在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作!当有网络的时候,再把本地提交推送一下就完成了...
简单记录了CENTOS6中GIT安装,ssh-keygen生成,客户端使用TortoiseGit加载KEYGEN连接GIT服务器的过程。
Git采用SSH协议创建远程仓库,并把本地工程上传到远程仓库
sshkey 是放在服务器端,这样pull commit push就无需输入密码,这里提供个教程
根据 git commits 通过 ssh 将文件同步到服务器 入门 这个插件需要 Grunt ~0.4.5 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令...
当你辛辛苦苦地在Linux下架设好SSH服务器,给账户分配完权限,以为什么都大功告成的时候。 这时你在客户端的Linux机器下登陆,可是可是,这时候爆出这段话remote:error:refuse ..... remote:error:blablabla ...
apache+配置+gitweb(git+http匿名访问智能clone不能push
git代码检出、colone、切换分支,初始化所有子模块,将父模块的代码检出至本地等。