[!TIP] 现在已经采用了 keyguard 的 ssh agent 来管理所有 ssh 密钥(包含 git ) 详细请见
keyguard ssh agent教程
Keyguard ssh agent 代理#
本地端配置#
设置->开发者->ssh 代理-> 启用 ssh 代理ssh客户端设置将 ssh 客户端指向 keyguard 的 socket 路径
\\.\pipe\keyguard-ssh-agent
- 添加一个环境变量
$env:SSH_AUTH_SOCK="\\.\pipe\keyguard-ssh-agent"
[!TIP] 已经测试过了如果这里用 ssh 配置文件 进行配置的话无法生效 有可能是bug,等待修复(3.0.3-132300007.release)
- 接下来按照传统方法添加 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密钥,按照各个平台要求添加公钥即可
