引言
SSH
的全称为 Secure Shell
即安全外壳协议,是一种加密的网络传输协议。它能够在公开的网络环境中提供安全的数据传输环境,通常用于登录远程主机与推拉代码。
同样一个 SSH
公钥文件,如果添加至某一个代码仓库,则称为部署公钥,配置后默认拥有该项目的只读权限,支持新增读写权限;如果添加至个人账户,称为账户 SSH
公钥,配置后拥有账户内所有代码仓库的读写权限。同一个 SSH
公钥无法既作为部署公钥,又作为个人账户 SSH
公钥。
操作步骤
1.生成SSH密钥对
- 对于每个平台,生成一对新的SSH密钥。在命令行中,执行以下命令,替换 <username> 为你的平台用户名(用于区分密钥)和 <email> 为你在该平台关联的电子邮件地址。如果你不希望为密钥设置密码(即空密码),直接按回车跳过。
# 语法 -f 后面可以跟上输出目录
ssh-keygen -t rsa -C "<email>" -f ~/.ssh/id_rsa_<username>
# 具体操作
λ ssh-keygen -t rsa -C "codeup@aliyun.com" // 创建新的 SSH 私钥与公钥密钥对,输入你的邮箱作为标签,
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa): id_rsa_codeup
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_codeup.
Your public key has been saved in id_rsa_codeup.pub.
The key fingerprint is:
SHA256:Y8HJbQ5gG+XW5f4r6jh/vSw2QeRVgMMWaQnrMlZ130A codeup@aliyun.com
The key's randomart image is:
+---[RSA 3072]----+
| +.. .o+*Eo.|
| . B + =X..o.|
| . O *=.o o|
| . B .o |
| S o.. |
| o + .. |
| o. |
| .. *... |
| .+++ ++. |
+----[SHA256]-----+
这会生成两个文件:id_rsa_<username>(私钥)和 id_rsa_<username>.pub(公钥)。私钥保持安全,公钥则将被添加到对应的平台账户设置中。
- 进入
.ssh
文件目录,查看刚刚生成公钥,全部复制,平台添加时使用。
λ cat id_rsa_codeup.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+baUfNUJp96cwuZwzJuW6h69GH7c6BUewu+xoJoj40IDU4eGshtPikVw1M9zsO8yB2/3JnZL4h5SCFjDlvdwL6aLc6WRPWjOJfHp6Kuq0e+QjqDWpG6qzluZirUbPBKgJXBugoEawmB2vsSj2bEt+owgPBpu9Mp6sI6GBKEZ73T7uvogdTR84zFmC3kA3Z299PMIwVEvlPglNhzVJ64kaPtAqcniY9lfPNWZzNO3VlpgXvqSFe+L4MBn37uOB15O3foBNdcIJnykBGodlszL4Yw3vOwa9+4Fgcq7NWiXZQOadkxzoXc6ay+8WFTTU4P0xcwR3Xqfp0rbhgXxIOI2xw8mHWGU+YDI55Er/+XEMRFDJaYMlZTdNd2as0M0qYSrI1NKPNEk4eIj6zIt/46/vLau3C6/4Ogv33lBgeOB4QedtSGV/ZO/zxeK5CN1d1sBtThN+Ia9ZudD+VRwX3C6e2V1cDUCkv94jt3PJiJDQAtQpkjbz+oQX5nC6aIp4c4M= codeup@aliyun.com
2.添加公钥到各平台
登录到每个平台的账户设置,找到SSH密钥管理部分。将对应平台的公钥内容(即 id_rsa_<username>.pub
文件的内容)粘贴到相应字段中。例如: 对于GitHub
,将 id_rsa_github.pub
的内容添加到GitHub
账户的SSH keys
设置;对于GitLab
,将 id_rsa_gitlab.pub
的内容添加到GitLab
账户的SSH keys
设置。
3.配置SSH配置文件 (~/.ssh/config
)
创建或编辑 ~/.ssh/config 文件,为每个平台添加一个配置段,以便SSH知道使用哪个密钥与哪个服务器通信。以下是一个示例配置:
# codeup
Host codeup.aliyun.com
HostName codeup.aliyun.com
IdentityFile ~/.ssh/id_rsa_codeup
PreferredAuthentications publickey
# GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
# GitLab
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa_gitlab
# Bitbucket
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_rsa_bitbucket
每个段落指定了主机名(用于匹配URL中的域名)、用户(通常是 git)、以及要使用的身份文件(即之前生成的私钥文件路径)。
4.验证连接
测试SSH连接,确保配置正确且密钥可用。针对每个平台,运行以下命令:
ssh -T git@codeup.aliyun.com
ssh -T git@github.com
ssh -T git@gitlab.com
ssh -T git@bitbucket.org
5.测试云效连接是否正常
λ ssh -T git@codeup.aliyun.com
The authenticity of host 'codeup.aliyun.com (118.31.165.50)' can't be established.
RSA key fingerprint is SHA256:yEGmgQNVrc3QAvDvoBrTCF2s07KwmmQ+AbWi9vSt/fE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'codeup.aliyun.com,118.31.165.50' (RSA) to the list of known hosts.
Welcome to Codeup, codeup!
Connection to codeup.aliyun.com closed.
写在最后
通过以上步骤,你已经在同一台计算机上为多个Git
平台配置了各自的SSH
密钥,使得Git
在与不同平台交互时能自动选择正确的密钥进行身份验证。这样,你就可以在同一个开发环境中无缝切换并管理多个平台上的Git
仓库了。
喜欢的话帮忙点个赞 + 关注吧,将持续更新 Git
相关的文章,还可以关注我的公众号 梁三石FE
,感谢您的关注~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。