赞
踩
版本控制在软件开发中至关重要,而 Git 是广泛使用的代码管理工具。有时,我们可能需要在多个平台 (如 GitHub、GitLab 和 Gitee) 上同步同一 Git 仓库,以便备份、协作等。
本文将带你玩转此操作,其中关键是“配置 SSH” 和“远程仓库”。首先,我们来讲述 SSH 的配置。
为确保安全和简化登录,需配置 SSH 密钥。SSH 密钥是用于身份验证的安全方式,可免密访问远程 Git 仓库。
在生成新的 SSH 密钥之前,应该检查本地电脑是否存在现有密钥。打开终端,输入一下命令以查看是否存在现有的 SSH 密钥。
ls -al ~/.ssh
此命令将列出 .ssh
目录中的所有文件(如果存在)。如果没有想要的,需要创建新的 SSH 密钥对。
在本地电脑上生成新的 SSH 密钥。 生成密钥后,可将公钥添加到 GitHub 等平台上的帐户中,以便通过 SSH 为 Git 操作启用身份验证。
打开终端输入一下命令,然后一路 Enter
键,完成密钥对的生成:
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_github
在这个命令中:
ssh-keygen
用于生成、管理和转换认证密钥的工具。-t
指定了密钥类型。ed25519
是一种现代的、安全的公钥加密算法,被广泛认为是非常强大且高效的。与 RSA 和 DSA 密钥相比,它提供了更好的安全性和性能。-C
指定一个注释,通常是用户的电子邮件地址。-f
指定了密钥文件的保存位置和名称。默认情况下,ssh-keygen
会生成名为 id_rsa
、id_ed25519
等的文件,具体取决于所选的密钥类型。在这里,它将被保存为 ~/.ssh/id_github
(私钥) 和 ~/.ssh/id_github.pub
(公钥)。相关链接:
- GitHub: 生成新 SSH 密钥
- GitLab: 生成 SSH 密钥对
- Gitee: 生成 SSH 公钥
~/.ssh/config
文件为了在一台电脑上配置多个平台的 SSH,你需要编辑 ~/.ssh/config
文件。以下是一个配置示例,分别配置了 GitHub、GitLab 和 Gitee 的 SSH:
# GitHub 配置 Host github.com HostName github.com User git IdentityFile ~/.ssh/id_github PreferredAuthentications publickey,password # 优先使用 SSH 公钥认证,然后再尝试用户名和密码认证 IdentitiesOnly yes # GitLab 配置 Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_gitlab PreferredAuthentications publickey # 仅使用 SSH 公钥认证 IdentitiesOnly yes # Gitee 配置 Host gitee.com HostName gitee.com User git IdentityFile ~/.ssh/id_gitee PreferredAuthentications publickey # 仅使用 SSH 公钥认证 IdentitiesOnly yes
在这个配置中:
Host
是你定义的别名,可以随意命名,但通常使用服务域名以方便记忆。HostName
是实际的服务域名。User
通常是 git
,因为这是大多数 Git 服务器的默认用户名。IdentityFile
指向你的私钥文件路径。PreferredAuthentications
指定 SSH 客户端在尝试身份验证时应优先考虑的认证方法列表。例如,你可以设置为只使用公钥认证,或者优先使用公钥认证,然后再尝试其他 (密码) 认证方式。IdentitiesOnly
yes
指示 SSH 只使用 IdentityFile
指定的身份进行认证,这有助于避免 SSH 代理或默认私钥的干扰。配置 ~/.ssh/config
文件完毕后,必须将 SSH 公钥添加到 GitHub、GitLab 和 Gitee,才能为帐户启用 SSH 访问。
相关链接:
设置 SSH 密钥并将其添加到 GitHub、GitLab 和 Gitee 后,可以测试连接。
测试 SSH 连接之前,应已完成以上所有步骤。
打开终端,输入以下命令:
ssh -T git@github.com # 测试 Github 的 SSH 连接
ssh -T git@gitlab.example.com # 测试 Gitlab 的 SSH 连接。注意:要将 gitlab.example.com 替换为你的实例 URL
ssh -T git@gitee.com # 测试 Gitee 的 SSH 连接
如果这是你第一次连接,你应该会看到类似以下消息,提示你需要验证平台主机的真实性:
> The authenticity of host ' (IP ADDRESS)' can't be established.
> ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
> Are you sure you want to continue connecting (yes/no)?
输入 yes
,然后按 Enter
。
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.
添加成功后,就可以使用 SSH 协议访问这些平台了。例如,你可以使用 git clone git@github.com/username/repository.git
来克隆 GitHub 上的仓库,SSH 会根据 ~/.ssh/config
文件中的配置来选择合适的私钥进行身份验证。
相关链接:
我们为电脑配置完 SSH 后,接下来为本地 Git 仓库添加多个远程平台的仓库链接。
为 Git 仓库添加多个远程平台的仓库的前提是得有个本地 Git 仓库。如果你还没有,可以用以下命令初始化一个。
cd your_folder
git init --initial-branch=main
如果你已经在其中一个平台上有个 Git 仓库,你可以使用以下命令将其克隆到本地。
git clone <远程仓库URL>
然后,cd
到新初始化、或者克隆下来的仓库目录,添加其他平台的远程仓库链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。