原文作者:@玄冬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/ 目录下 需要创建 ...
在创建 Git 用户时,我们需要使用 adduser 命令来创建一个名为 git 的用户,然后需要配置该用户的 SSH 密钥,以便于客户端连接服务器。我们可以使用 ssh-keygen -f .ssh/gitAdmin 命令来生成 SSH 密钥,然后将公钥...
搭建基于SSH公钥的Git服务器 本文将指导您如何搭建基于SSH公钥的Git服务器,包括服务端和客户端的配置。服务端配置包括创建共享账户、搭建空版本仓库、访问授权和限制shell。客户端配置包括安装Git、生成SSH公钥、...
彻底解决Mac端git clone/push速度太慢的问题,详情请参阅文档。
在Windows环境中,Git批量操作是开发团队协作中的一项重要任务,尤其当管理多个Git仓库时。本文将深入探讨如何利用批处理脚本来实现这一目标,主要关注标题提及的"windows git 批量 clone 脚本"。我们将讨论每个文件...
当用户克隆一个通过SSH URL指定的仓库时,Git客户端会通过SSH协议与远程Git服务器建立连接,并使用用户的SSH密钥进行身份验证。如果SSH代理程序没有加载用户的私钥,或者私钥不在SSH代理的管理之下,用户将无法通过...
GitBash是一款为Windows系统提供类Unix shell环境的工具,它内置了Git命令行接口,同时也包括其他Unix-like命令,如ssh,使得用户在Windows环境下也能方便地进行远程服务器操作。 首先,让我们详细了解SSH(Secure ...
假设您收到了多个公钥文件,存储于`/home/git/.ssh/`目录下: ```bash cat /home/git/.ssh/id_rsa.client.pub >> ~/.ssh/authorized_keys cat /home/git/.ssh/id_rsa.carol.pub >> ~/.ssh/authorized_keys cat ...
本文将详细介绍如何配置Apache服务器以便使用GitWeb工具实现通过HTTP协议对Git仓库进行匿名访问,并且允许智能Clone但禁止直接通过HTTP协议进行Push操作。这种方式通常适用于需要提供给开发团队一个便捷的代码浏览...
Git是一种强大的分布式版本控制系统,它的出现极大地提升了软件开发团队的工作效率和协作能力。与传统的集中式版本控制系统如SVN相比,...对于团队协作和大型项目管理来说,使用Git配合SSH连接远程仓库是最佳实践之一。
对于Windows用户,可以下载类似`Git-2.29.2.2-64-bit.exe`这样的安装程序,这是一个特定版本的Git二进制文件,包含最新功能和修复的安全问题。 Git的版本号由三部分组成:主版本号、次版本号和修订号(如2.29.2)。...
本文将指导读者在 Windows 环境下搭建基于 SSH 的 Git 服务器,使用 msysgit 和 copssh 软件实现 Git 服务器的搭建和配置。 一、安装必要软件 在开始搭建 Git 服务器之前,需要安装两个软件:msysgit 和 copssh。...
以上就是关于 `git clone` 和 `git submodule` 命令以及如何使用它们来管理和维护项目中的子模块的详细介绍。这些命令对于处理大型项目或包含多个子项目的项目非常重要。熟练掌握这些命令可以帮助你更高效地管理工作...
当你想要获取一个已存在的Git仓库副本时,可以使用`git clone`命令。例如,如果要从Gitblit服务端克隆一个仓库,命令格式通常是: ``` git clone https://your-gitblit-server.com/username/repository.git ``` 这里...
4. 提交更改:之后,当你添加、修改或删除被LFS跟踪的文件时,Git会处理这些文件,将它们上传到LFS服务器,并在本地存储一个指向这些文件的指针。 5. 克隆仓库:其他人想要克隆你的仓库时,他们首先会克隆常规的Git...
这样,当客户端执行`git clone`或`git pull/push`等操作时,服务器会通过SSH密钥验证客户端的身份,实现安全的代码同步。 总的来说,搭建基于SSH的Git服务器涉及到Windows服务器的用户管理、权限配置、Git和SSH服务...
本教程将深入讲解如何在自己的计算机上创建一个Git服务器端,建立远程代码仓库,以便团队成员可以进行协作开发。 一、Git基础概念 在开始搭建服务器之前,我们先了解一些Git的基本概念: 1. 工作目录:本地开发...