引言:SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录和其他安全网络服务。在GitHub中,可以使用SSH密钥来验证您的身份,从而安全地访问仓库。
- 通过 SSH 方式克隆仓库与 HTTPS 方式克隆仓库的区别:
- SSH(Secure Shell):
- SSH 是一种加密的网络协议,它允许通过安全的通道连接到远程服务器。
- 使用 SSH 克隆仓库时,您需要将公钥添加到您的 GitHub 账户中。一旦添加,就可以在不输入用户名和密码的情况下克隆和推送仓库。
- SSH 通常比 HTTPS 更快,因为它支持连接缓存和隧道,减少了每次操作时的身份验证步骤。
- SSH 更适合自动化脚本和持续集成/持续部署(CI/CD)流程,因为它可以免密操作。
- HTTPS(Hypertext Transfer Protocol Secure):
- HTTPS 是 HTTP 的安全版本,它通过 SSL/TLS 协议为数据传输提供加密。
- 使用 HTTPS 克隆仓库时,每次与 GitHub 通信都需要进行身份验证,这意味着可能需要定期输入用户名和密码,除非使用了令牌或保存了凭据。
- HTTPS 更易于设置,因为它不需要生成密钥对或将公钥添加到您GitHub 账户。
- HTTPS 更适合偶尔的克隆和操作,因为它对网络的要求较低,不需要 SSH 支持的服务器配置。
- SSH(Secure Shell):
- 如何在本地计算机上生成一个新的 SSH 密钥:
要生成一个新的 SSH 密钥,您可以按照以下步骤操作:- 打开终端(Terminal)。
- 输入以下命令,其中
your_email@example.com
应该替换为注册 GitHub 时使用的电子邮件地址,my_new_key
是为新密钥设置的名称(可以是任何喜欢的名称):
这条命令会生成一个基于 Ed25519 算法的 SSH 密钥对。如果想使用更传统的 RSA 算法,可以使用以下命令:ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/my_new_key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/my_new_key
- 当系统提示输入密码时,可以设置一个密码(passphrase),也可以留空。如果设置了密码,每次使用密钥时都需要输入密码。
- 生成的密钥对将包含一个私钥(
my_new_key
)和一个公钥(my_new_key.pub
)。私钥应保密,不应与他人分享。公钥则需要添加到您GitHub 账户中。 - 要查看公钥,可以使用以下命令:
复制显示的内容,然后将其添加到 GitHub 账户的 SSH 密钥设置中。生成 SSH 密钥并添加到 GitHub 后,就可以使用 SSH 方式克隆仓库了。cat ~/.ssh/my_new_key.pub
Your identification has been saved in /Users/forbesdytto/.ssh/id_ed25519 Your public key has been saved in /Users/forbesdytto/.ssh/id_ed25519.pub The key fingerprint is: SHA256:QW4p1biAqRK7xGyw6HSq1nDsLqpHyRUKXn6c4wkLwic meiraogao@kanyun.com
终端显示已经成功生成了一个ED25519类型的SSH密钥对。这个密钥对包括一个私钥(id_ed25519
)和一个公钥(id_ed25519.pub
),它们被保存在了您的用户目录下的.ssh
文件夹中。这个密钥对可以用于SSH(安全外壳协议)认证,以安全地连接到远程服务器或Git仓库等。
密钥的指纹是一个SHA256哈希值,用于唯一标识您的公钥。这个指纹在您将公钥添加到远程服务(如GitHub、GitLab或您自己的服务器)时可能会用到,以确保您添加的是正确的公钥。
接下来,您可能需要将这个公钥添加到远程服务上,以便通过SSH密钥进行无密码登录。这通常涉及到以下几个步骤:
-
复制公钥:打开终端,使用
cat
命令或文本编辑器查看并复制id_ed25519.pub
文件的内容。例如,您可以使用命令cat ~/.ssh/id_ed25519.pub
来查看公钥内容。 -
登录到远程服务:打开您想要添加公钥的远程服务的网页界面,并登录到您的账户。
-
添加SSH公钥:在远程服务的账户设置中,找到SSH公钥管理部分,并将您之前复制的公钥粘贴到相应的输入框中。有些服务可能需要您给这个公钥起一个名字或描述。
-
保存设置:完成公钥的粘贴后,保存您的设置。现在,当您尝试通过SSH连接到该远程服务时,您的计算机将自动使用您的私钥进行认证,而无需手动输入密码。
请注意,由于私钥是敏感信息,因此应确保它不被未授权的人员访问。同时,也请确保不要将私钥的内容上传到公共或不受信任的地方。