<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soul Of Free Loop &#187; KeePass</title>
	<atom:link href="https://zohead.com/archives/tag/keepass/feed" rel="self" type="application/rss+xml" />
	<link>https://zohead.com</link>
	<description>Uranus Zhou&#039;s Blog</description>
	<lastBuildDate>Sat, 19 Jul 2025 15:42:46 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>Win10 Bash下使用KeePass KeeAgent插件</title>
		<link>https://zohead.com/archives/win10-bash-keeagent/</link>
		<comments>https://zohead.com/archives/win10-bash-keeagent/#comments</comments>
		<pubDate>Mon, 05 Dec 2016 16:40:32 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[KeeAgent]]></category>
		<category><![CDATA[KeePass]]></category>
		<category><![CDATA[MSYS]]></category>
		<category><![CDATA[msysGit]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Win10]]></category>
		<category><![CDATA[WSL]]></category>
		<category><![CDATA[证书]]></category>

		<guid isPermaLink="false">https://zohead.com/?p=1315</guid>
		<description><![CDATA[Win10 Bash 使用 KeeAgent 问题 出于管理不同服务器以及自己几个 VPS 的需要，我都会把这些 SSH 密钥保存到自己的 KeePass 密码数据库中，KeePass 软件安装了 KeeAgent 插件之后，可以在用户需要登录服务器时方便地自动加载 SSH 密钥。KeeAgent 同时支持 PuTTY 和 OpenSSH 格式的私钥，而且支持 Windows / Linux / Mac 系统。我在平时使用中无论用 Windows 下的 PuTTY / SecureCRT / XShell 软件还是 Linux 下用 ssh 命令都能愉快的自动加载 KeeAgent 保存的 S [&#8230;]]]></description>
				<content:encoded><![CDATA[<h2 id="win10-bash-使用-keeagent-问题">Win10 Bash 使用 KeeAgent 问题</h2>
<p>出于管理不同服务器以及自己几个 VPS 的需要，我都会把这些 SSH 密钥保存到自己的 KeePass 密码数据库中，KeePass 软件安装了 <a href="http://lechnology.com/software/keeagent/">KeeAgent</a> 插件之后，可以在用户需要登录服务器时方便地自动加载 SSH 密钥。KeeAgent 同时支持 PuTTY 和 OpenSSH 格式的私钥，而且支持 Windows / Linux / Mac 系统。我在平时使用中无论用 Windows 下的 PuTTY / SecureCRT / XShell 软件还是 Linux 下用 ssh 命令都能愉快的自动加载 KeeAgent 保存的 SSH 证书，这里也强烈建议各位将 SSH 密钥用 KeeAgent 插件保存到 KeePass 密码库中。</p>
<p>不过自从将工作的电脑系统升级到 Windows 10 之后，虽然我使用 Win10 系统自带的 Bash shell 的场合也越来越多了（原来的 MSYS 和 Cygwin 环境基本很少开启了），但也发现 Win10 Bash 自带的 ssh 命令却不支持 KeeAgent 插件，仍然需要手工选择私钥文件或者输入密码登录服务器。</p>
<p>KeeAgent 在 Linux / Mac 系统下是支持原生的 SSH agent 的，SSH agent 使用的是基于 Unix socket 文件工作方式，也因此 Linux / Mac 系统下的 ssh 命令直接就能自动加载 KeeAgent 保存的密钥。</p>
<p>虽然 Win10 WSL（Windows Subsystem for Linux）子系统内部是支持 Unix socket 文件的，但 WSL 子系统外的 Windows 版本 KeeAgent 插件要想支持 WSL 内部的 socket 文件就不太容易了，还需要通过别的方法来绕过这个限制。</p>
<h2 id="msysgit-to-unix-socket-代理">msysGit to Unix socket 代理</h2>
<p>看了 KeePass 的 KeeAgent 插件选项可以看到该插件是支持 Cygwin 和 <a href="https://github.com/msysgit/msysgit">msysGit</a>（现在已更名为 <a href="https://git-for-windows.github.io/">Git for Windows</a>）兼容的 socket 文件的，这样原来的 Cygwin 和 MSYS 用户也可以自动加载 KeeAgent 中保存的密钥，例如我的 KeeAgent 配置如下：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737371494/keeagent-socket.png" alt="KeeAgent 的 msysGit socket 选项" title="KeeAgent 的 msysGit socket 选项"></p>
<p>虽然 KeeAgent 不能直接支持 Win10 WSL 子系统内的 Unix socket 文件，但已经有人写了个 msysGit socket to Unix socket 的 Python 代理程序，借助此 <a href="https://gist.github.com/FlorinAsavoaie/8c2b6cb00f786c2caab65b1a51f4e847"><strong>msysgit2unix-socket.py</strong></a> 代理程序就可以让 Win10 Bash shell 通过 SSH agent 加载 KeeAgent 中的密钥咯。</p>
<p>该代理程序启动时会创建一个用于 SSH 认证的 Unix socket 文件，然后 TCP 连接到本地 KeeAgent 插件创建的 msysGit socket 文件，收到 ssh、scp 等命令的认证请求后将数据转发到 KeeAgent 插件，最后将结果返回到 Unix socket 文件。代理程序的工作机制大概如我粗画的这张图：</p>
<p><img src="http://res.cloudinary.com/digwht2y0/image/upload/v1737442857/msysgit2unix-socket.png" alt="msysGit to Unix socket 代理工作机制" title="msysGit to Unix socket 代理工作机制"></p>
<p>不过我在使用中还是发现该代理程序存在一点小问题：</p>
<p>第一次 SSH 认证可以通过 KeeAgent 插件返回成功，后续再有新的认证请求时却会一直卡住。调试之后发现前面的认证请求完成之后，虽然 ssh 命令至 Unix socket 文件的连接关闭了，但是代理程序至 msysGit socket 文件的连接却一直保持着未关闭，这样新的认证请求将无法正常从 KeeAgent 插件获取有效的证书数据。</p>
<p>为了解决这个问题，我 fork 了这个 msysGit to Unix socket 代理程序，并做了小改动，也放到了 Gist 上：</p>
<p><a href="https://gist.github.com/zohead/b3cbb709fdfd2c0da31bff1b3f436af7">https://gist.github.com/zohead/b3cbb709fdfd2c0da31bff1b3f436af7</a></p>
<h2 id="使用-socket-代理程序">使用 socket 代理程序</h2>
<p>首先下载 <a href="https://gist.github.com/zohead/b3cbb709fdfd2c0da31bff1b3f436af7/raw/7afb94eeb531fc10f8168ad828e32103268d76b7/msysgit2unix-socket.py"><strong>msysgit2unix-socket.py</strong></a> 代理程序，可以直接放到 Win10 Bash shell 用户主目录中，然后编辑 <code>~/.bashrc</code> 文件增加下面这几行：</p>
<pre class="brush: bash; title: ; notranslate">
export SSH_AUTH_SOCK=&quot;/tmp/.ssh-auth-sock&quot;
if [ -s /mnt/d/msys/keeagent.sock ]; then
	~/msysgit2unix-socket.py /mnt/d/msys/keeagent.sock:$SSH_AUTH_SOCK 2&gt;/dev/null
	trap &quot;~/msysgit2unix-socket-exit.sh $$&quot; EXIT
fi
</pre>
<p>这样运行 bash 命令后会自动启动该程序，<strong>msysgit2unix-socket.py</strong> 程序启动之后会自动转为后台守护进程，并在 <code>/tmp</code> 目录（实际在 Windows 系统的 <code>C:\Users\user\AppData\Local\lxss\rootfs\tmp</code> 目录下）下生成兼容 ssh 命令的 socket 文件，而且如果开启多个 Bash 会话也不会影响，只会在后台保持运行一个 <strong>msysgit2unix-socket.py</strong> 代理程序。</p>
<p>上面内容第二行的 <code>/mnt/d/msys/keeagent.sock</code> 路径就是 KeeAgent 选项中的 <strong>Create msysGit compatible socket file</strong> 文件路径，请根据情况自行修改。</p>
<p>我增加的一行 trap 退出操作是为了能在最后一个 Win10 Bash 会话退出之时能执行自定义的清理脚本以删除 <strong>msysgit2unix-socket.py</strong> 程序产生的临时文件，不然下次再开启 Bash 运行 <strong>msysgit2unix-socket.py</strong> 程序时会因为已经存在临时的 socket 及 PID 文件导致程序退出。</p>
<p>我增加的 <strong>msysgit2unix-socket-exit.sh</strong> 脚本程序也非常简单：</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/sh
BASHPIDS=`pidof bash -o %PPID -o $1`
[ &quot;x$BASHPIDS&quot; != &quot;x&quot; ] &amp;&amp; exit 0
rm -f /tmp/msysgit2unix-socket.pid /tmp/.ssh-auth-sock
</pre>
<p>这里使用 pidof 命令判断当前退出的是不是最后一个 Win10 Bash 会话（通过参数忽略了父 bash 进程和脚本程序自身进程），如果是最后一个 Bash 会话则删除 <strong>msysgit2unix-socket.py</strong> 程序产生的临时文件。</p>
<p>当然你也可以去掉增加的清理脚本，直接在 <code>~/.bashrc</code> 文件中判断 <strong>msysgit2unix-socket.py</strong> 程序运行状态并删除之前产生的临时文件：</p>
<pre class="brush: bash; title: ; notranslate">
export SSH_AUTH_SOCK=&quot;/tmp/.ssh-auth-sock&quot;
if [ -s /mnt/d/msys/keeagent.sock ]; then
	pgrep -f msysgit2unix-socket.py &gt;/dev/null 2&gt;&amp;1
	if [ $? -ne 0 ]; then
		rm -f /tmp/msysgit2unix-socket.pid /tmp/.ssh-auth-sock
		~/msysgit2unix-socket.py /mnt/d/msys/keeagent.sock:$SSH_AUTH_SOCK 2&gt;/dev/null
	fi
fi
</pre>
<p>这样修改之后就能在 Win10 Bash 里畅快地使用 ssh、scp 等命令通过 KeeAgent 插件自动登录服务器进行管理咯，祝大家在这个看起来不太冷的 12 月玩得开心 ^_^。</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/win10-bash-keeagent/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Chromebook上使用KeePass的几种姿势</title>
		<link>https://zohead.com/archives/keepass-chromebook/</link>
		<comments>https://zohead.com/archives/keepass-chromebook/#comments</comments>
		<pubDate>Sat, 01 Aug 2015 17:06:16 +0000</pubDate>
		<dc:creator><![CDATA[Uranus Zhou]]></dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[ARC]]></category>
		<category><![CDATA[BrowsePass]]></category>
		<category><![CDATA[Chrome OS]]></category>
		<category><![CDATA[Chromebook]]></category>
		<category><![CDATA[Crouton]]></category>
		<category><![CDATA[KeePass]]></category>
		<category><![CDATA[keepass2]]></category>
		<category><![CDATA[KeePassDroid]]></category>
		<category><![CDATA[LastPass]]></category>
		<category><![CDATA[密码管理]]></category>

		<guid isPermaLink="false">http://zohead.com/?p=1016</guid>
		<description><![CDATA[KeePass 是一个开源的轻量级密码管理器，只需要记住一个 KeePass 主密码就可以用来管理所有其它各种网站或者服务密码，相对于 LastPass 这种在线同步的密码管理器最大的好处就是 KeePass 的密码数据库是完全由用户自己来掌控的，不用担心像 LastPass 被攻击泄漏密码之类的问题（今年就出现过一次哦）。 KeePass 目前相对也有个劣势就是浏览器插件功能不强，基本都需要配合 KeePass 客户端软件使用，好在 KeePass 也支持 Windows、Mac OS X、Linux、Android、iOS 等各种操作系统，可惜目前在 Chromebook 这种不能直接运行 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>KeePass 是一个开源的轻量级密码管理器，只需要记住一个 KeePass 主密码就可以用来管理所有其它各种网站或者服务密码，相对于 LastPass 这种在线同步的密码管理器最大的好处就是 KeePass 的密码数据库是完全由用户自己来掌控的，不用担心像 LastPass 被攻击泄漏密码之类的问题（今年就出现过一次哦）。</p>
<p>KeePass 目前相对也有个劣势就是浏览器插件功能不强，基本都需要配合 KeePass 客户端软件使用，好在 KeePass 也支持 Windows、Mac OS X、Linux、Android、iOS 等各种操作系统，可惜目前在 Chromebook 这种不能直接运行客户端软件的系统上使用时会有一些障碍。LastPass 由于是通过 Chrome 浏览器扩展直接在线同步的没有这个问题，而你如果是 Chromebook 和 KeePass 的重度用户，那还是相当不便的。</p>
<p>有关 KeePass 的详细介绍和原理请参考其官方网站：<a href="http://keepass.info/" target="_blank">http://keepass.info/</a>。</p>
<p>经过初步研究，这里我列出几种在 Chromebook 上使用 KeePass 的方法供读者参考：</p>
<ul>
<li><strong>Crouton + keepass2 + chromeIPass：</strong></li>
</ul>
<p>这个方法可能暂时只适用于使用 x86 处理器的 Chromebook，Chromebook 上可以使用 Crouton 安装基本完整的 Linux 系统，安装完成之后可以直接在 Linux 系统中安装 keepass2 软件包（比较新的 Linux 系统软件源中一般会自带这个的），并从 KeePass 官网下载启用 KeePassHttp 插件，这样就可以在 Chrome OS 系统里安装 chromeIPass 扩展愉快的使用 KeePass 密码数据库了。</p>
<p>这里就不详细介绍 keepass2 软件如何安装，chromeIPass 扩展如何使用之类的了。无奈由于目前 armhf 版本的 Linux 系统自带的 mono （KeePass 图形程序依赖开源的 mono .NET 开发环境）版本的问题，armhf 下的 keepass2 可以安装但无法正常运行。</p>
<p>笔者在目前使用的三星 ARM Chromebook 安装的 Ubuntu 14.04 版本上就无法正常运行，将 Crouton Linux 系统升级到最新的 Ubuntu 15.04 或者 15.10 等系统（自带的 mono 环境已经升级）有可能能正常运行，这里没有继续尝试了。</p>
<ul>
<li><strong>CKP Chrome 扩展程序：</strong></li>
</ul>
<p><a href="https://chrome.google.com/webstore/detail/ckp-keepass-integration-f/lnfepbjehgokldcaljagbmchhnaaogpc" target="_blank">CKP</a> （KeePass integration for Chrome）是 Chrome 应用商店里的一款 KeePass 嵌入式扩展程序，安装之后导入 KeePass 数据库就可以实现访问网站时自动填入用户名和密码，可惜就是 CKP 只能以只读方式使用 KeePass 密码数据库，如果数据库文件变化了只能重新导入（Chromebook 上还没有太好的办法能直接修改密码数据库文件）。</p>
<p>CKP 同时功能上也存在限制：无法完整浏览密码数据库里的全部条目，如果某个服务密码存在密码数据库里但不能直接通过 Chrome 浏览器访问这样就没法取出密码了。</p>
<ul>
<li><strong>BrowsePass Chrome 应用：</strong></li>
</ul>
<p><a href="https://chrome.google.com/webstore/detail/browsepass/pihdapfeofbodahcblfmeckjnfcigakb" target="_blank">BrowsePass</a> 则是另一款独立的 Chrome Packaged App，因此不能实现根据当前浏览的网页自动填写用户名和密码的功能，这个 App 目前对密码数据库文件支持文件好，可以完整浏览全部目录和条目，可以复制密码到相应的网页，但是仍然还有一个主要问题：BrowsePass 目前也只支持只读方式打开密码数据库，作者说后续可能会增加写数据库支持，但不保证什么时候能加入的。</p>
<ul>
<li><strong>Chrome ARC + KeePassDroid：</strong></li>
</ul>
<p>这个是目前我正在使用的方法，主要这种方式完全支持对密码数据库的各种写入操作，不需要另外运行一个 Crouton Linux 系统，而且这也是比较通用的方法哦，不只是能在 Chromebook 下使用，其实也可以直接在 Windows、Linux 等其它安装了普通 Chrome 浏览器的系统下使用。</p>
<p>Chrome 现在支持通过 ARC（App Runtime for Chrome） 直接运行 Android 程序，虽然目前兼容性还不是特别好，但 KeePassDroid 这种没有使用 NDK 代码的简单 Android 应用还是完全支持的。</p>
<p>首先安装 <a href="https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn" target="_blank">ARC Welder</a> Chrome 应用，安装完成之后会自动安装其依赖的 App Runtime for Chrome 运行环境，然后从网上下载 KeePassDroid 的安装 apk 文件，打开 ARC Welder 应用加载对应的 apk 文件将其转换为 Chrome 应用，不过需要注意的是转换的时候必须启用剪贴板访问权限，而且记得增加这个参数：</p>
<p><strong>{"enableExternalDirectory": true}</strong></p>
<p>启用外部 SD 卡目录访问权限，这样转换出来的 KeePassDroid Chrome 应用才可以正常打开 KeePass 密码数据库文件，具体如下图所示：</p>
<div style="width: 368px" class="wp-caption alignnone"><a href="http://res.cloudinary.com/digwht2y0/image/upload/v1737369840/arcwelder-keepassdroid.png" target="_blank"><img alt="ARC Welder转换KeePassDroid" src="http://res.cloudinary.com/digwht2y0/image/upload/v1737369840/arcwelder-keepassdroid.png" width="358" height="672" /></a><p class="wp-caption-text">ARC Welder 转换 KeePassDroid</p></div>
<p>然后点击 Download ZIP 按钮保存成 zip 文件，并将 zip 文件解压缩并在扩展程序界面加载为 Chrome 应用。</p>
<p>第一次启动 KeePassDroid 应用时 Chrome OS 系统会提示你选择一个 SD 卡目录，选择之后会让你选择密码数据库文件路径，只要把你的 KeePass 数据库文件放到对应的路径打开即可，例如我使用的路径就是这样：/storage/sdcard/Download/zzm.kdbx。</p>
<p>选择密码数据库文件之后输入你的数据库主密码，KeePassDroid 就会列出数据库里的所有目录和条目，进入一个任何条目，KeePassDroid 会自动弹出通知消息提示你复制用户名和密码，这样就可以正常在各类网站上使用 KeePass 密码咯。</p>
<p><strong>后记：</strong></p>
<p>目前 GitHub 上的 Pascal Mathis 开发了一款基于 Node.js 的 KeePass 库：<a href="https://github.com/NeoXiD/keepass.io" target="_blank">keepass.io</a>，这个 Node.js 库实现了完整的密码数据库读取和写入功能，在和开发者简单沟通之后，有想法在后面有空时基于 keepass.io 将其完整功能改为通过 Chrome Filesystem 等 API 实现从而不依赖 Node.js，这样能以单独 Chrome App 的形式使用 KeePass 密码数据库。只是在发现 KeePassDroid 能正常使用的情况，这个就当作后面有空时的一个念想再说咯～～～ 祝各位玩的开心。 ^_^</p>
]]></content:encoded>
			<wfw:commentRss>https://zohead.com/archives/keepass-chromebook/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
