随笔 - 934, 文章 - 0, 评论 - 249, 阅读 - 345万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

多Git服务器的不同SSH密钥对配置

Posted on   蝈蝈俊  阅读(38)  评论(0编辑  收藏  举报

在连接多个 Git 服务器且使用不同的账号时,没法用默认 id_rsa 密钥文件名了,容易产生冲突。

解决方法就是:为每个服务器生成不同的 SSH 密钥对,并使用 SSH 配置文件来管理这些密钥的使用。

具体步骤如下:

为每个账号生成不同的 SSH 密钥

你可以为每个 Git 服务器或账号生成一个单独的 SSH 密钥对,确保文件名不冲突。例如:

# 为第一个服务器生成密钥
ssh-keygen -t rsa -C "your_email1@example.com" -b 4096 -f ~/.ssh/id_rsa_server1

# 为第二个服务器生成密钥
ssh-keygen -t rsa -C "your_email2@example.com" -b 4096 -f ~/.ssh/id_rsa_server2

# 为第三个服务器生成密钥
ssh-keygen -t rsa -C "your_email3@example.com" -b 4096 -f ~/.ssh/id_rsa_server3

其中 -f ~/.ssh/id_rsa_server1 表示将密钥保存为指定的文件名,避免默认 id_rsa 密钥文件名的冲突。

配置 SSH 客户端使用不同的密钥

生成完密钥后,配置 ~/.ssh/config 文件以指定不同的 Git 服务器使用相应的 SSH 密钥。

编辑或创建 ~/.ssh/config 文件:

# 配置第一个服务器
Host git-server1
    HostName git.server1.com
    User git
    IdentityFile ~/.ssh/id_rsa_server1

# 配置第二个服务器
Host git-server2
    HostName git.server2.com
    User git
    IdentityFile ~/.ssh/id_rsa_server2

# 配置第三个服务器
Host git-server3 # 定义别名,连接时可以直接使用
    HostName git.server3.com # 指定要连接的服务器主机名(或 IP 地址)
    User git # 指定要用于 SSH 连接的用户名。
    IdentityFile ~/.ssh/id_rsa_server3 # 指定用于身份验证的 SSH 私钥文件路径。

~/.ssh/config 是当前用户的 SSH 配置文件。它主要用于为 SSH 客户端定义一系列的配置规则,简化连接不同的服务器时的设置。

User git 指定要用于 SSH 连接的用户名为git这个账户。SSH 连接需要一个用户名。像 GitHub、GitLab 这样的 Git 服务器会统一使用 git 作为 SSH 连接的默认用户名,所有用户都通过该用户名连接服务器。Git 服务器通过 SSH 密钥识别用户的身份,而不是依赖用户输入的用户名。

使用 ~/.ssh/config 有以下好处:

  • 简化 SSH 命令:可以使用别名简化连接命令,避免记住复杂的地址或参数。
  • 灵活性:为不同的服务器指定不同的用户名、端口和密钥文件。
  • 提高效率:避免重复输入相同的 SSH 参数,尤其在使用多个不同配置的服务器时。

使用配置连接 Git 服务器

~/.ssh/config 文件中,Host 部分定义了一个别名。你可以使用这些别名来克隆或推送代码:

# 克隆第一个服务器上的仓库
git clone git@git-server1:path/to/repo.git

# 克隆第二个服务器上的仓库
git clone git@git-server2:path/to/repo.git

通过这种方式,每个 Git 服务器连接时都会自动使用相应的 SSH 密钥。

将公钥添加到 Git 服务器

你需要将生成的每个 SSH 公钥(即 .pub 文件)添加到对应的 Git 服务器的账号设置中。例如,将 id_rsa_server1.pub 添加到 Git 服务器 1,将 id_rsa_server2.pub 添加到 Git 服务器 2 等。

这样设置后,你就可以用不同的账号连接多个 Git 服务器了。

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2022-09-09 go get 有关的几个环境变量
点击右上角即可分享
微信分享提示