`
aigo
  • 浏览: 2644599 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[git]多个ssh口令访问同一个服务器时,用不同口令进行clone和push的问题

git 
阅读更多

原文作者:@玄冬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
 
2,配置用户名的问题
使用git config user.name和git config user.email配置第二个用户名之后,即使后面push时使用的是第一个用户名,git仓库的提交里面显示的是第二个用户名。所以生成完第二个key以后,记得把user.name还原到自己的默认用户名。这种情况说明一个问题,当用ssh连接服务器时,用户名只是一个别称了,真正起到验证作用的是key

 

部分参考自:

Switching between multiple ssh keys in Git on Windows

http://stackoverflow.com/questions/9672975/switching-between-multiple-ssh-keys-in-git-on-windows

 
  • 大小: 94.8 KB
  • 大小: 54 KB
分享到:
评论

相关推荐

    git 同一托管平台 多个sshkey 配置小助手.exe

    开发此工具碰到的问题是 开发者碰到同一代码托管平台 来自多个账号的 sshkey 加入开发这 分别加入了 三个 gitee 不同团队的项目 这个时候我们需要配置多个key在 Administrator(当前用户名)/.ssh/ 目录下 需要创建 ...

    同一台电脑上搭建GIT服务器和客户端

    在创建 Git 用户时,我们需要使用 adduser 命令来创建一个名为 git 的用户,然后需要配置该用户的 SSH 密钥,以便于客户端连接服务器。我们可以使用 ssh-keygen -f .ssh/gitAdmin 命令来生成 SSH 密钥,然后将公钥...

    搭建基于SSH公钥的Git服务器.docx

    搭建基于SSH公钥的Git服务器 本文将指导您如何搭建基于SSH公钥的Git服务器,包括服务端和客户端的配置。服务端配置包括创建共享账户、搭建空版本仓库、访问授权和限制shell。客户端配置包括安装Git、生成SSH公钥、...

    彻底解决Mac端git clone/push速度太慢的问题

    彻底解决Mac端git clone/push速度太慢的问题,详情请参阅文档。

    windows git 批量 clone 脚本

    在Windows环境中,Git批量操作是开发团队协作中的一项重要任务,尤其当管理多个Git仓库时。本文将深入探讨如何利用批处理脚本来实现这一目标,主要关注标题提及的"windows git 批量 clone 脚本"。我们将讨论每个文件...

    git clone时报错问题解决

    当用户克隆一个通过SSH URL指定的仓库时,Git客户端会通过SSH协议与远程Git服务器建立连接,并使用用户的SSH密钥进行身份验证。如果SSH代理程序没有加载用户的私钥,或者私钥不在SSH代理的管理之下,用户将无法通过...

    gitBash 客户端 ssh 服务器远程登陆

    GitBash是一款为Windows系统提供类Unix shell环境的工具,它内置了Git命令行接口,同时也包括其他Unix-like命令,如ssh,使得用户在Windows环境下也能方便地进行远程服务器操作。 首先,让我们详细了解SSH(Secure ...

    git+ssh ubuntu 安装配置笔记

    假设您收到了多个公钥文件,存储于`/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(git http匿名访问智能clone不能push

    本文将详细介绍如何配置Apache服务器以便使用GitWeb工具实现通过HTTP协议对Git仓库进行匿名访问,并且允许智能Clone但禁止直接通过HTTP协议进行Push操作。这种方式通常适用于需要提供给开发团队一个便捷的代码浏览...

    使用SSH方式远程连接Git服务器.pdf

    Git是一种强大的分布式版本控制系统,它的出现极大地提升了软件开发团队的工作效率和协作能力。与传统的集中式版本控制系统如SVN相比,...对于团队协作和大型项目管理来说,使用Git配合SSH连接远程仓库是最佳实践之一。

    git clone 最新版

    对于Windows用户,可以下载类似`Git-2.29.2.2-64-bit.exe`这样的安装程序,这是一个特定版本的Git二进制文件,包含最新功能和修复的安全问题。 Git的版本号由三部分组成:主版本号、次版本号和修订号(如2.29.2)。...

    Windows下搭建基于ssh的git服务器教程.doc

    本文将指导读者在 Windows 环境下搭建基于 SSH 的 Git 服务器,使用 msysgit 和 copssh 软件实现 Git 服务器的搭建和配置。 一、安装必要软件 在开始搭建 Git 服务器之前,需要安装两个软件:msysgit 和 copssh。...

    git代码clone,submodule

    以上就是关于 `git clone` 和 `git submodule` 命令以及如何使用它们来管理和维护项目中的子模块的详细介绍。这些命令对于处理大型项目或包含多个子项目的项目非常重要。熟练掌握这些命令可以帮助你更高效地管理工作...

    Git的客户端+服务端Gitblit+Git clone

    当你想要获取一个已存在的Git仓库副本时,可以使用`git clone`命令。例如,如果要从Gitblit服务端克隆一个仓库,命令格式通常是: ``` git clone https://your-gitblit-server.com/username/repository.git ``` 这里...

    Git Clone大文件工具

    4. 提交更改:之后,当你添加、修改或删除被LFS跟踪的文件时,Git会处理这些文件,将它们上传到LFS服务器,并在本地存储一个指向这些文件的指针。 5. 克隆仓库:其他人想要克隆你的仓库时,他们首先会克隆常规的Git...

    Windows服务器下搭建基于SSH的GIT服务器.doc

    这样,当客户端执行`git clone`或`git pull/push`等操作时,服务器会通过SSH密钥验证客户端的身份,实现安全的代码同步。 总的来说,搭建基于SSH的Git服务器涉及到Windows服务器的用户管理、权限配置、Git和SSH服务...

    git创建服务器端

    本教程将深入讲解如何在自己的计算机上创建一个Git服务器端,建立远程代码仓库,以便团队成员可以进行协作开发。 一、Git基础概念 在开始搭建服务器之前,我们先了解一些Git的基本概念: 1. 工作目录:本地开发...

Global site tag (gtag.js) - Google Analytics