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 文件结构如下
Git 配置 SSH-Key 从远程存储库 clone 项目
安装后的 PuTTY 文件如下
Git 配置 SSH-Key 从远程存储库 clone 项目

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]

Git 配置 SSH-Key 从远程存储库 clone 项目
2.2 密保修改命令
支持通过下面的命令修改 passphrase

ssh-****** -p

Git 配置 SSH-Key 从远程存储库 clone 项目
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 设置下。
Git 配置 SSH-Key 从远程存储库 clone 项目
Git 配置 SSH-Key 从远程存储库 clone 项目
Git 配置 SSH-Key 从远程存储库 clone 项目
通过命令测试连接是否成功,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 文件。
Git 配置 SSH-Key 从远程存储库 clone 项目
5.2.2 使用 fileName.ppk 文件
打开程序 pageant.exe,运行后会在 win 下有个图标,双击图标进入管理列表面板,点击 Add key 选中生成的 fileName.ppk 文件在弹出的窗口输入密保 passphrase,ssh-rsa 就添加完成了。此时再克隆远程存储库项目就不会报错了。Git 配置 SSH-Key 从远程存储库 clone 项目
Git 配置 SSH-Key 从远程存储库 clone 项目