前言
本文章只对本人在Windows10下KeePass使用KeeAgent插件进行ssh密钥管理的记录
首先感谢所有使用项目的开发者们。
使用软件或项目如下
- KeePass 2.4.3 KeePass主程序
- KeepAgent Stable 0.10.1 KeeAgent插件
- weasel-pagent 1.4 weasel-pagent程序 如WSL需要使用KeeAgent需要使用
其次感谢部分已有教程的启发及指导
一、KeePass主体及KeeAgent插件下载安装
通过以下链接下载及安装KeePass主体及KeeAgent插件
KeePass 2.4.3 KeePass主程序可根据个人喜好选择安装版或便携版
KeepAgent Stable 0.10.1 KeeAgent插件下载解压缩至 KeePass程序目录下 或可在主目录下新建文件夹进行统一插件管理 本人使用Plugins文件夹将进行统一管理
如需要支持和WSL中ubuntu 需要下载压缩weasel-pagent 1.4 建议同样压缩至KeePass主目录下 方便管理 如不需要支持WSL中ubuntu 则可跳过此步骤
二、KeeAgent 插件配置及使用
KeeAgent插件配置
- 打开KeePass主程序 自动加载编译 KeeAgent插件 在 工具栏 工具-》选项中 会发现多出图二-1中①标 KeeAgent选项 。选中进入配置
2. 配置并勾选② 选项 开启Windows OpenSSH支持 配置并勾选③ 选项 临时目录可自定义 本人选用Windows默认Temp目录 ④为msysGit支持(本人未使用测试过)
KeeAgent使用
新建KeePass记录
标题自定义 如生成密钥时填写过密码则在密码框填入 如为空则清空密码框默认生成随机密码(划重点)
进入高级页面
点击② 附件 添加附件 添加生成的私钥文件 此步骤是将私钥文件存储至KeePass记录存储库中 如后续不需要本地私钥可删除本地私钥
进入KeeAgent页面进行配置如下图 最后点击ok 添加完成
序号说明
2.允许KeeAgent使用改记录(必选)
3.当数据库开启/解锁时自动加载此密钥(可选 建议常用密钥选择 因每次建立ssh链接只允许尝试3-5次私钥 建议非常用 不勾选此选项 如需要使用时手动加载密钥)
4.当数据库关闭或者锁定 自动卸载此密钥(可选 建议选中 如需要锁定数据库仍然可使用该密钥则不勾选 为保证安全性改选项默认勾选)
5.使用该密钥需要确认 当调用此密钥时会弹出对话框二次确认 进一步提升安全性
6.选择新建记录时添加的私钥文件
7.私钥名称 跟附件名称对应 可通过修改附件名称修改
8.对应密钥公钥加载密钥
手动加载密钥
加载后可在 KeePass 主程序工具栏 工具->KeeAgent 或者 托盘程序右键菜单 KeeAgent中查看管理到当前加载密钥
三、Windows10下cmd 、PowerShell、Git客户端、MINGW64 使用KeeAgent密钥
- Windows 10 cmd 、PowerShell 如配置正常 勾选图二-1中 ② 则可正常使用 (如须同时开启Git客户端及MING64客户端支持 此处有大坑 后面会提及 )
- Git客户端及MING64使用 需在系统环境变量中 添加如图三-2配置 配置成功后 重新开启 Git 及 MINGW64客户端 可正常使用KeeAgent中密钥
变量名 SSH_AUTH_SOCK 变量值 C:\Windows\Temp\Cygwin.sock
- 冲突解决方法
此处为上面提及cmd 、PowerShell、Git客户端、MINGW64 冲突的大坑。在进行过三.2配置后会发现 cmd及PowerShell 中 git及ssh 命令不在能正确使用 KeeAgent中密钥。 初步查找原因是因 环境变量配置SSH_AUTH_SOCK 后 会使 cmd 及 PowerShell中agent程序代理错误 本人经过尝试后 发现解决方法有以下几种 如有更好解决方法欢迎大家交流 - 网上有网友通过在windows用户文件夹下 .bashrc 中 添加
1
export SSH_AUTH_SOCK="C:\Windows\Temp\Cygwin.sock"
初始MINGW64 及Git客户端 不需要添加三.2的环境变量 但是本人测试没通过 本人使用环境 Windows10 1903 Git版本2.24.1.windows.2及其自带MINGW64
- 保留系统环境变量 通过cmd及 PowerShell 初始化是进行删除当前命令环境下 SSH_AUTH_SOCK 系统变量
- cmd 初始化脚本 打开注册表编辑器(regedit) 定位至
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
添加字符串
AutoRun 数值数据 set SSH_AUTH_SOCK=
如图三-2.2.1 - PowerShell 初始化脚本添加 以管理员身份运行 PowerShell 分别执行一下命令在打开的记事本中添加命令
1
2new-item -path $profile -itemtype file -force
notepad $profile重新打开PowerShell 如因策略安全提醒禁止使用初始脚本 则执行1
Set-Item Env:SSH_AUTH_SOCK
输入Y回车1
set-ExecutionPolicy RemoteSigned
此方法开启了默认关闭的安全策略 可能会造成安全隐患 但目前只知道了这个比较好的方法 如有更好方法 欢迎大家交流 - 目前本人采用 2方法
- cmd 初始化脚本 打开注册表编辑器(regedit) 定位至
四、WSL 中Ubuntu 使用KeeAgent 密钥方法
- 下载安装weasel-pagent 1.4 weasel-pagent程序 解压缩至任意文件夹 建议解压缩至KeePass程序目录下
- Ubuntu中使用weasel-pagent 启用Ubuntu 编辑~/.bash_profile文件 添加以下内容 其中weaselpath 根据自己存放目录进行修改保存退出 重新启动Ubuntu 如有以下提醒则证明加载成功
1
2
3
4
5
6
7
8
9
10
11weaselpath="/mnt/d/SoftWare/KeePass/weasel-pageant/"
echo -n "pageant loading, wait..."
"$weaselpath/weasel-pageant" -k> /dev/null 2> /dev/null
eval $("$weaselpath/weasel-pageant" -r -a "/tmp/.weasel-pageant-$USER")> /dev/null 2> /dev/null
sleep 1
sshkeysloaded=$(ssh-add -l | grep -c SHA)
if [[ $sshkeysloaded -gt 0 ]]; then
echo -e "Loaded $sshkeysloaded keys."
else
echo -e "Failed to load any keys."
fi