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 项目_第1张图片
安装后的 PuTTY 文件如下
Git 配置 SSH-Key 从远程存储库 clone 项目_第2张图片

2.生成密钥对 SSH-Key

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

ssh-keygen -t rsa -b 4096 -C “niaonao@163.com”

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

ssh-keygen -p

Git 配置 SSH-Key 从远程存储库 clone 项目_第4张图片
2.3 设置全局性的账号信息

git config --global user.name niaonao
git config --global user.email niaonao@163.com
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,执行结果如下:

Administrator@DESKTOP-OB9FR3E MINGW64
$ cd ~/.ssh
Administrator@DESKTOP-OB9FR3E 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;

Administrator@DESKTOP-OB9FR3E MINGW64 ~/.ssh
$ eval $(ssh-agent -s)
Agent pid 1091
Administrator@DESKTOP-OB9FR3E MINGW64 ~/.ssh
$ ssh-add id_rsa
Enter passphrase for id_rsa:
Identity added: id_rsa (niaonao@163.com)

Administrator@DESKTOP-OB9FR3E MINGW64 ~/.ssh
$ ssh-add -L
ssh-rsa AA1yc…(省略部分信息)…zG9n/NyrGPwZw== niaonao@163.com

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 项目_第5张图片
Git 配置 SSH-Key 从远程存储库 clone 项目_第6张图片
Git 配置 SSH-Key 从远程存储库 clone 项目_第7张图片
通过命令测试连接是否成功,github 可能会出现无响应的情况,可以跳过测试。

ssh -T git@gitee.com
ssh -T git@github.com
ssh -T git@codehub.devcloud.huaweicloud.com

测试响应信息

Administrator@DESKTOP-OB9FR3E MINGW64 ~/.ssh
$ ssh -T git@gitee.com
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 命令,从远程存储库克隆项目。下面是正确的克隆远程存储库的项目。

Administrator@DESKTOP-OB9FR3E MINGW64 /d/workspace/Hoxton
$ git clone git@gitee.com: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 项目_第8张图片
5.2.2 使用 fileName.ppk 文件
打开程序 pageant.exe,运行后会在 win 下有个图标,双击图标进入管理列表面板,点击 Add key 选中生成的 fileName.ppk 文件在弹出的窗口输入密保 passphrase,ssh-rsa 就添加完成了。此时再克隆远程存储库项目就不会报错了。Git 配置 SSH-Key 从远程存储库 clone 项目_第9张图片
Git 配置 SSH-Key 从远程存储库 clone 项目_第10张图片

Power By niaonao, The End, Thanks

你可能感兴趣的:([版本控制],Git)