跳过正文

为Git配置ssh密钥以及ssh代理

·705 字

[!TIP] 现在已经采用了 keyguard 的 ssh agent 来管理所有 ssh 密钥(包含 git ) 详细请见 keyguard ssh agent 教程

Keyguard ssh agent 代理
#

本地端配置
#

  1. 设置 -> 开发者 -> ssh 代理 -> 启用 ssh 代理
  2. ssh客户端设置 将 ssh 客户端指向 keyguard 的 socket 路径
\\.\pipe\keyguard-ssh-agent
  1. 添加一个环境变量
$env:SSH_AUTH_SOCK="\\.\pipe\keyguard-ssh-agent"

[!TIP] 已经测试过了如果这里用 ssh 配置文件 进行配置的话无法生效 有可能是bug,等待修复(3.0.3-132300007.release)

  1. 接下来按照传统方法添加 ssh 密钥对到 keyguard 中

生成一个ssh密钥对
#

这一步采用ssh生成器即可,推荐 keyguard github🔗

没有?建议使用 Bitwarden 等密码管理器生成并保存一对新的密钥对。

config 配置
#

假设你已经有一个本地的SSH密钥对,并且私钥文件名为 my_key,公钥文件名为 my_key.pub 编辑 ~/.ssh/config 文件(如果没有则创建一个),添加以下内容:

Host github.cn
    HostName github.cn
    User git
    # (填写你的私钥文件路径) -> 可以改成调用公钥了
    IdentityFile ~/.ssh/my_key.pub

ssh agent 配置完成后,这里可以改成调用公钥。只要 keyguard 进程在后台运行,他就会自动捕获这个请求,并在密码库中找到对应的私钥,通过身份验证后,尝试让你连接。 期间,私钥永远不会出现在你的硬盘中,确保完全安全!👍

测试一下~
#

ssh -T git@github.com
# ssh -Tvvv git@github.com  # 带debug信息的测试

若看到返回

Hi YourUserName! You've successfully authenticated, but GitHub does not provide shell access.

则说明正常!

私钥 my_key 权限配置
#

  • Linux端:
chmod 600 ~/.ssh/my_key
  • Windows端: 右键 属性 -> 安全 选项卡 -> 高级 -> 左下角 禁用继承 -> 将继承的权限转换为此对象的显式权限 -> 移除除了你当前用户SYSTEM之外的所有权限条目 -> 应用 -> 一路应用+确定

其他 ssh 调用方式
#

  • 只需要将所有私钥调用换成公钥即可!非常方便,直接拉起 ssh agent 认证👍
ssh -i ~/.ssh/my_key.pub -p 22 usrname@192.168.1.1

添加git remote并推送
#

// 待补充懒得查
git pull github main

推送不成功->重启终端

云端
#

在settings中添加一个ssh密钥,按照各个平台要求添加公钥即可

Haley
作者
Haley