现在我已gnome-keyring-daemon
设置为登录时启动。如果我运行emacs -q
,然后使用 打开服务器上的文件M-x find-file
,然后输入远程服务器上的文件(例如)/ssh:user@server:/home/user/.bashrc
,则会弹出一个 GUI 并要求输入我的 ssh 私钥密码。我输入了正确的密码,文件就可以正常打开。
但是,如果gnome-keyring-daemon
密钥环的密码过期,emacs
仍然允许连接到文件而无需输入密码。例如,假设我打开一个远程文件,然后使用 终止该文件C-x k
。然后我转到终端并输入ssh-add -D
。我可以通过运行来验证这是否会导致密钥环忘记密码ssh localhost
(GUI 弹出并要求输入密码)。但是,如果我尝试使用 在 emacs 中重新打开远程文件C-x C-f M-p RET
,则文件无需密码即可打开。
运行tramp-cleanup-all-connections
可修复此问题,即如果密钥不在密钥环中,代理将正确要求输入密码。设置tramp-persistency-file-name
为nil
似乎不会改变行为。
解决此问题的有效方法是什么?我是否要运行tramp-cleanup-all-connections
某个钩子?也许在计时器上?运行此功能是否会对未来的 tramp 连接产生负面影响?
- emacs 版本:GNU Emacs 24.3.1
- 流浪者版本:2.2.6-24.3
- gnome-keyring-daemon --版本:3.2.2
编辑
我现在在另一台计算机上安装了相关软件包的新版本,但仍然看到相同的行为。
- emacs 版本:GNU Emacs 24.4.2
- 流浪者版本:2.2.9-24.4
- gnome-keyring-daemon --版本:3.10.1
我刚刚执行了以下步骤:
- 使用以下方式打开 emacs
emacs -Q
- 评估
(require 'tramp)
和(setq tramp-verbose 10)
- 使用;gnome-keyring-daemon GUI 打开远程服务器上的文件
tramp
要求输入 SSH 密钥密码。 - 使用以下方法杀死远程文件
C-x k
- 在终端中我运行
ssh-add -D
并验证密码不再被缓存。 - 使用重新打开远程文件
C-x C-f M-p RET
- Tramp 无需输入密码即可打开文件。
tramp 调试缓冲区的副本位于这个Pastebin。
答案1
Tramp 缓存使用密码。您可以通过以下方式禁用此功能:setq password-cache nil)