步步走

步步走前端

马上订阅 步步走 RSS 更新: https://bubuzou.com/atom.xml

git clone 的时候如何通过 SSH 链接来下载远程项目

2023年10月11日 10:19

当我们需要从 github 下载项目的时候,它提供了 2 种下载链接:

1
2
https://github.com/ant-design/ant-design.git
git@github.com:ant-design/ant-design.git

上面 2 种下载链接分别使用了 HTTPS 和 SSH 协议。那么这两种协议有什么区别呢?

  • 访问控制:SSH 协议使用公钥和私钥来进行身份验证,因此你需要在远程主机上安装你的公钥。只有拥有私钥的用户才能进行身份验证和访问。相反,HTTPS 协议使用用户名和密码进行身份验证。git clone 或 git fetch 的时候,如果使用 HTTPS 链接则不需要进行身份验证,而 SSH 链接需要。
  • 传输速度:SSH 协议在传输数据时进行压缩,因此它可以在传输大量数据时比 HTTPS 更快。此外,SSH 协议通常可以在传输数据时使用更少的带宽,这对于连接速度较慢的网络非常有用。
  • 防火墙限制: 某些公司或组织可能会在防火墙中阻止对 SSH 端口的访问,这可能会使 SSH 协议无法使用。另一方面,HTTPS 协议通常可以通过防火墙,因为它使用标准的 Web 端口 80 和 443。

想要通过 SSH 链接来下载项目,需要在客户端和服务器之间配置 SSH key,那么如何做呢?下面以 github 为例来说明具体步骤。

1. 在本地生成 SSH key

1
ssh-keygen -t ed25519 -C "user@example.com"

这里我把 user@example.com 替换成了我的 github.com 的邮箱。执行完后可能会有如下提示,不用管直接按回车即可。

1
2
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/johndoe/.ssh/id_ed25519):
1
2
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

最后你会发现会打印这么一串信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
SHA256:ToTEp33dDV8Sokslnx568DC5ABPQTmvlBjGx+r/W0k8 user@example.com
The key's randomart image is:
+--[ED25519 256]--+
|o.+o .. |
|. +o....+ |
| +.= .o. |
|o.+ o . . . |
|o+ . . .So . |
|*. oo+ o . |
|o*. o =E= o |
|ooo.o =..o o |
|.o+o++ .. |
+----[SHA256]-----+

然后你就会发现在 .ssh 目录下多了 2 个文件:

1
2
$ ls ~/.ssh
id_ed25519 id_ed25519.pub

2. 为你的 github 账户添加一个公共的 key

上面已经在本地生成好了 SSH key,现在就要把这个 key 的内容贴到 github 账户里。

执行如下命令后,会在终端打印 key 的内容,可以选中它们然后复制。

1
cat ~/.ssh/id_ed25519.pub

然后按照如下顺序把 key 的内容贴到 github 的账户里。

    1. Log in to your...

剩余内容已隐藏

查看完整文章以阅读更多