Git 配置 SSH-Key 从远程存储库 clone 项目

1.环境准备

此处演示环境为 Windows10,远程存储库平台为 码云 。安装 Git 和 PUTTY 工具。

参考文档:
https://help.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh

安装 Git
安装 PuTTY
安装后的 Git 文件结构如下
在这里插入图片描述
安装后的 PuTTY 文件如下
在这里插入图片描述

2.生成**对 SSH-Key

2.1 Generating a new SSH key
桌面右键打开 Git Bash 命令窗口。
执行 ssh-****** 命令生成**对,如下图生成私钥文件 id_rsa,公钥文件 id_rsa.pub。在**对生成过程中,会提示设置密保 passphrase 用于保护**。

ssh-****** -t rsa -b 4096 -C “[email protected]

在这里插入图片描述
2.2 密保修改命令
支持通过下面的命令修改 passphrase

ssh-****** -p

在这里插入图片描述
2.3 设置全局性的账号信息

git config --global user.name niaonao
git config --global user.email [email protected]
git config --global --list

3. **代理 SSH-Agent

3.1 常用命令
查看 ssh-agent 是否运行中

eval $(ssh-agent -s)

启动 ssh-agent

eval ‘ssh-agent’

添加 SSH key 到 ssh-agent,命令行切换 cd 到**路径下,执行下面的命令。

ssh-add id_rsa

3.2 Adding your SSH key to the ssh-agent
执行 ssh-add 命令添加 SSH Key 到 ssh-agent,执行结果如下:

[email protected] MINGW64
$ cd ~/.ssh
[email protected] MINGW64 ~/.ssh
$ eval ‘ssh-agent’
SSH_AUTH_SOCK=/tmp/ssh-gMBElr6F4CaJ/agent.1081; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1082; export SSH_AGENT_PID;
echo Agent pid 1082;

[email protected] MINGW64 ~/.ssh
$ eval $(ssh-agent -s)
Agent pid 1091
[email protected] MINGW64 ~/.ssh
$ ssh-add id_rsa
Enter passphrase for id_rsa:
Identity added: id_rsa ([email protected])

[email protected] MINGW64 ~/.ssh
$ ssh-add -L
ssh-rsa AA1yc…(省略部分信息)…zG9n/NyrGPwZw== [email protected]

3.3 ssh-add 扩展命令

-D:删除ssh-agent中的所有**.
-d:从ssh-agent中的删除**
-e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。
-s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙。
-L:显示ssh-agent中的公钥
-l:显示ssh-agent中的**
-t life:对加载的**设置超时时间,超时ssh-agent将自动卸载**
-X:对ssh-agent进行解锁
-x:对ssh-agent进行加锁

4. 添加公钥到远程存储库

此处以 Github 为例,码云、华为云等代码托管平台配置方式相同。
将公钥 id_rsa.pub 配置到 自己的账户 SSH 设置下。
在这里插入图片描述
在这里插入图片描述

通过命令测试连接是否成功,github 可能会出现无响应的情况,可以跳过测试。

ssh -T [email protected]
ssh -T [email protected]
ssh -T [email protected]

测试响应信息

[email protected] MINGW64 ~/.ssh
$ ssh -T [email protected]
The authenticity of host ‘gitee.com (212.64.62.174)’ can’t be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘gitee.com,212.64.62.174’ (ECDSA) to the list of known hosts.
Hi niaonao! You’ve successfully authenticated, but GITEE.COM does not provide shell access.

5. git clone

5.1 克隆远程存储库项目
执行 clone 命令,从远程存储库克隆项目。下面是正确的克隆远程存储库的项目。

[email protected] MINGW64 /d/workspace/Hoxton
$ git clone [email protected]:niaonao/spring-cloud.git
Cloning into ‘spring-cloud’…
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4/4), done.

5.2 Disconnected: No supported authentication methods available
在使用 GitHub 存储库时,git clone 报错,Disconnected: No supported authentication methods available (server sent: publickey)。 查看 Stack Overflow 更多解决方案
常见解决方案:

  • 修改配置 /etc/ssh/sshd_config 将 PasswordAuthentication no 修改为 PasswordAuthentication yes 重启 ssh 服务即可;
  • 用 Putty 生成 ppk 文件来做权限验证(此处使用 ppk 来处理)

5.2.1 使用 PuTTY 生成 fileName.ppk 文件
打开 puttygen.exe 程序,选择 Conversions 菜单选项下 Import key 导入私钥文件,输入 passphrase。如下图选中 Save private key 生成 fileName.ppk 文件。
在这里插入图片描述
5.2.2 使用 fileName.ppk 文件
打开程序 pageant.exe,运行后会在 win 下有个图标,双击图标进入管理列表面板,点击 Add key 选中生成的 fileName.ppk 文件在弹出的窗口输入密保 passphrase,ssh-rsa 就添加完成了。此时再克隆远程存储库项目就不会报错了。在这里插入图片描述
在这里插入图片描述