Windows10下KeePass使用KeeAgent插件进行ssh密钥管理

前言

本文章只对本人在Windows10下KeePass使用KeeAgent插件进行ssh密钥管理的记录  
首先感谢所有使用项目的开发者们。  
使用软件或项目如下

 

其次感谢部分已有教程的启发及指导

一、KeePass主体及KeeAgent插件下载安装

通过以下链接下载及安装KeePass主体及KeeAgent插件
KeePass 2.4.3 KeePass主程序可根据个人喜好选择安装版或便携版  
KeepAgent Stable 0.10.1 KeeAgent插件下载解压缩至 KeePass程序目录下 或可在主目录下新建文件夹进行统一插件管理 本人使用Plugins文件夹将进行统一管理

图片仅供参考 文件数量因版本及使用时间不同略有不同
图片仅供参考 图一-2
如需要支持和WSL中ubuntu 需要下载压缩weasel-pagent 1.4  建议同样压缩至KeePass主目录下 方便管理 如不需要支持WSL中ubuntu 则可跳过此步骤

二、KeeAgent 插件配置及使用

KeeAgent插件配置
  1. 打开KeePass主程序 自动加载编译 KeeAgent插件 在 工具栏 工具-》选项中 会发现多出图二-1中①标 KeeAgent选项 。选中进入配置

图二-1
2. 配置并勾选② 选项 开启Windows OpenSSH支持 配置并勾选③ 选项 临时目录可自定义 本人选用Windows默认Temp目录 ④为msysGit支持(本人未使用测试过)

KeeAgent使用
  1. 新建KeePass记录  
    标题自定义 如生成密钥时填写过密码则在密码框填入 如为空则清空密码框默认生成随机密码(划重点)
    进入高级页面
    图二-1.1
    点击② 附件  添加附件 添加生成的私钥文件 此步骤是将私钥文件存储至KeePass记录存储库中 如后续不需要本地私钥可删除本地私钥
    进入KeeAgent页面进行配置如下图 最后点击ok 添加完成
    图二-1.2

    序号说明
    2.允许KeeAgent使用改记录(必选)
    3.当数据库开启/解锁时自动加载此密钥(可选 建议常用密钥选择 因每次建立ssh链接只允许尝试3-5次私钥 建议非常用 不勾选此选项 如需要使用时手动加载密钥)  
    4.当数据库关闭或者锁定 自动卸载此密钥(可选 建议选中 如需要锁定数据库仍然可使用该密钥则不勾选 为保证安全性改选项默认勾选)
    5.使用该密钥需要确认  当调用此密钥时会弹出对话框二次确认 进一步提升安全性
    6.选择新建记录时添加的私钥文件
    7.私钥名称 跟附件名称对应 可通过修改附件名称修改
    8.对应密钥公钥

  2. 加载密钥  
    手动加载密钥
    图二-2.1
    加载后可在 KeePass 主程序工具栏 工具->KeeAgent 或者 托盘程序右键菜单 KeeAgent中查看管理到当前加载密钥

图二-2.2

三、Windows10下cmd 、PowerShell、Git客户端、MINGW64 使用KeeAgent密钥

  1. Windows 10 cmd 、PowerShell 如配置正常 勾选图二-1中 ② 则可正常使用 (如须同时开启Git客户端及MING64客户端支持 此处有大坑 后面会提及 )
  2. Git客户端及MING64使用 需在系统环境变量中 添加如图三-2配置  配置成功后 重新开启 Git 及 MINGW64客户端 可正常使用KeeAgent中密钥
    变量名 SSH_AUTH_SOCK 变量值 C:\Windows\Temp\Cygwin.sock
    图三-2
  3. 冲突解决方法
    此处为上面提及cmd 、PowerShell、Git客户端、MINGW64 冲突的大坑。在进行过三.2配置后会发现 cmd及PowerShell 中 git及ssh 命令不在能正确使用 KeeAgent中密钥。 初步查找原因是因 环境变量配置SSH_AUTH_SOCK 后 会使 cmd 及 PowerShell中agent程序代理错误 本人经过尝试后 发现解决方法有以下几种 如有更好解决方法欢迎大家交流
  4. 网上有网友通过在windows用户文件夹下 .bashrc 中 添加
    1
    export SSH_AUTH_SOCK="C:\Windows\Temp\Cygwin.sock"
    初始MINGW64 及Git客户端  不需要添加三.2的环境变量 但是本人测试没通过  本人使用环境 Windows10 1903 Git版本2.24.1.windows.2及其自带MINGW64  
    
  5. 保留系统环境变量  通过cmd及 PowerShell 初始化是进行删除当前命令环境下 SSH_AUTH_SOCK 系统变量
    • cmd 初始化脚本 打开注册表编辑器(regedit) 定位至
      计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
      添加字符串
      AutoRun 数值数据 set SSH_AUTH_SOCK=
      如图三-2.2.1
      如图三-2.2.1
    • PowerShell 初始化脚本添加  以管理员身份运行 PowerShell 分别执行一下命令
      1
      2
      new-item -path $profile -itemtype file -force
      notepad $profile
      在打开的记事本中添加命令
      1
      Set-Item Env:SSH_AUTH_SOCK
      重新打开PowerShell 如因策略安全提醒禁止使用初始脚本 则执行
      1
      set-ExecutionPolicy RemoteSigned
      输入Y回车
      此方法开启了默认关闭的安全策略 可能会造成安全隐患  但目前只知道了这个比较好的方法 如有更好方法 欢迎大家交流    
    • 目前本人采用 2方法

   

四、WSL 中Ubuntu 使用KeeAgent 密钥方法

  1. 下载安装weasel-pagent 1.4 weasel-pagent程序 解压缩至任意文件夹 建议解压缩至KeePass程序目录下
  2. Ubuntu中使用weasel-pagent  启用Ubuntu 编辑~/.bash_profile文件 添加以下内容 其中weaselpath 根据自己存放目录进行修改
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    weaselpath="/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
    保存退出  重新启动Ubuntu  如有以下提醒则证明加载成功

upload successful