从生成 SSH 密钥到成功连接测试的经验笔记(以Gitee为例)
1. 生成 SSH 密钥对
-  选择合适的加密算法 -  ED25519: - 密钥长度:私钥 256 位(32 字节),公钥 256 位(32 字节),签名 512 位(64 字节)。
- 安全性:提供 128 位的安全性,适用于大多数场景。
- 性能:高效,适用于资源受限的设备。
- 命令:ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_gitee
 
-  RSA: - 密钥长度:建议使用 4096 位(至少 2048 位)。
- 安全性:提供较高的安全性,但性能略低于 ED25519。
- 命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_gitee
 
-  ECDSA: - 支持的曲线: - nistp256:256 位密钥长度,提供 128 位的安全性。
- nistp384:384 位密钥长度,提供 192 位的安全性。
- nistp521:521 位密钥长度,提供 256 位的安全性。
 
- 安全性:根据所选曲线的不同,提供不同程度的安全性。
- 命令:ssh-keygen -t ecdsa -b 256 -C "your_email@example.com" -f ~/.ssh/id_ecdsa_gitee
 
- 支持的曲线: 
-  Ed448: - 密钥长度:私钥 448 位(56 字节),公钥 448 位(56 字节),签名 912 位(114 字节)。
- 安全性:提供 224 位的安全性,适用于需要更高安全性的场景。
- 命令:ssh-keygen -t ed448 -C "your_email@example.com" -f ~/.ssh/id_ed448_gitee
 
 
-  
-  生成 Gitee 的 ED25519 密钥对: ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_gitee在生成密钥对时,系统会提示你输入一个 passphrase。请务必记住这个 passphrase,它用于保护你的私钥。 
-  邮箱命名最佳实践 -  包含用户名和设备信息:将用户名和设备信息包含在邮箱地址中,可以清楚地知道这把密钥是哪个用户在哪个设备上生成的。例如: ssh-keygen -t ed25519 -C "alice@laptop"
-  包含用途:如果密钥用于特定的项目或服务,可以在邮箱地址中包含这些信息。例如: ssh-keygen -t ed25519 -C "alice@projectA"
-  包含日期:在邮箱地址中包含生成日期,可以帮助你追踪密钥的生命周期。例如: ssh-keygen -t ed25519 -C "alice@laptop-20231001"
-  包含电子邮件地址:使用电子邮件地址作为邮箱地址的一部分,可以方便地与他人共享密钥时进行识别。例如: ssh-keygen -t ed25519 -C "alice@example.com"
-  组合信息:可以将上述信息组合起来,创建更详细的邮箱地址。例如: ssh-keygen -t ed25519 -C "alice@laptop-20231001-projectA"
 
-  
-  查看生成的密钥文件: ls ~/.ssh你应该看到以下文件: - id_ed25519_gitee
- id_ed25519_gitee.pub
 
2. 配置 ~/.ssh/config 文件
 
- 编辑 ~/.ssh/config文件:# Gitee Host gitee.comHostName gitee.comUser gitIdentityFile ~/.ssh/id_ed25519_gitee
3. 将公钥添加到 Gitee
-  复制公钥内容: cat ~/.ssh/id_ed25519_gitee.pub
-  登录 Gitee 账户: - 进入 Gitee 的设置页面。
- 找到“SSH 公钥”或“部署密钥”部分。
- 粘贴你复制的公钥内容,并保存。
 
4. 测试连接
-  测试与 Gitee 的连接: ssh -T git@gitee.com
-  首次连接提示:如果这是你第一次连接到该服务器,系统会显示一条消息,询问你是否要继续连接。这条消息通常看起来像这样: The authenticity of host 'gitee.com (IP_ADDRESS)' can't be established. RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. Are you sure you want to continue connecting (yes/no/[fingerprint])?Gitee SSH 密钥指纹 
 以下是 Gitee 的公钥指纹:
 SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88 (ED25519)
 SHA256:meTsVSCgOas8fBnJyx8EPlUJr6iQ96riFmCFPfUkDtU (RSA)
 SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc (ECDSA)
-  确认并保存主机信息:输入 yes并按回车键。这一步骤会让 SSH 客户端将服务器的公钥添加到你的~/.ssh/known_hosts文件中。这意味着下次你再连接时,SSH 客户端可以验证服务器的身份,从而提高安全性。
-  验证成功的信息:如果一切正常,你应该会看到类似如下所示的消息: Hi username! You've successfully authenticated, but Gitee does not provide shell access.
-  错误处理:如果你遇到任何错误,比如认证失败或无法建立连接,请检查你的 SSH 密钥是否已正确添加到 Gitee 账户中,或者是否有网络问题阻止了你连接到 Gitee。 
5. 克隆或推送代码
-  克隆 Gitee 仓库: git clone git@gitee.com:username/repo.git- git@gitee.com:username/repo.git是一个SSH URL,用于通过SSH协议访问Gitee上的Git仓库。这个URL的各个部分有不同的含义:
 
-  推送代码到 Gitee: cd repo git remote add origin git@gitee.com:username/repo.git git push origin main -u # git push origin main --set-upstream- -u是一个选项,它的全称是- --set-upstream,作用是将本地分支(在这个例子中是- main)与远程仓库中的相应分支(- origin/main)建立关联。
- 最佳实践:在第一次推送(push)时设置本地主分支(在这个例子中是main)与远程主分支(orgin/main)之间的上下游关系。
 
解析 git@gitee.com:username/repo.git
 
-  git@:- 这是SSH协议中的用户名。在Gitee(以及其他类似的Git托管服务)中,用户名通常是 git。这是因为Gitee的服务器使用git用户来处理所有的Git请求。
 
- 这是SSH协议中的用户名。在Gitee(以及其他类似的Git托管服务)中,用户名通常是 
-  gitee.com:- 这是Gitee的域名。表示你要连接的服务器地址。
 
-  ::- 这个冒号是分隔符,用于区分服务器地址和仓库路径。
 
-  username:- 这是你在Gitee上的用户名。表示你拥有的仓库所属的账户。
 
-  /repo.git:- 这是你在Gitee上创建的仓库名称。repo是仓库的名字,.git是Git仓库的标准后缀。
 
- 这是你在Gitee上创建的仓库名称。
完整URL的含义
- git@gitee.com:username/repo.git:- 这个URL表示你通过SSH协议连接到 gitee.com服务器,使用git用户名,访问username账户下的repo仓库。
 
- 这个URL表示你通过SSH协议连接到 
总结
通过以上步骤,你可以生成并配置 SSH 密钥对,确保能够顺利连接到 Gitee。具体步骤包括:
- 生成 SSH 密钥对:选择合适的加密算法,使用 ssh-keygen命令生成 Gitee 的 ED25519 密钥对,并设置一个 passphrase。同时,使用有意义的邮箱地址命名密钥,以便于管理和识别。
- 配置 ~/.ssh/config文件:编辑~/.ssh/config文件,指定 Gitee 主机和对应的私钥文件。
- 将公钥添加到 Gitee:复制公钥内容并将其添加到 Gitee 的设置中。
- 测试连接:使用 ssh -T命令测试与 Gitee 的连接。
- 克隆或推送代码:使用 Git 命令克隆和推送代码到 Gitee。
希望这篇经验笔记对你有所帮助!