emacs tramp 与 gnome-keyring-daemon 协同工作

emacs tramp 与 gnome-keyring-daemon 协同工作

现在我已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-namenil似乎不会改变行为。

解决此问题的有效方法是什么?我是否要运行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

我刚刚执行了以下步骤:

  1. 使用以下方式打开 emacsemacs -Q
  2. 评估(require 'tramp)(setq tramp-verbose 10)
  3. 使用;gnome-keyring-daemon GUI 打开远程服务器上的文件tramp要求输入 SSH 密钥密码。
  4. 使用以下方法杀死远程文件C-x k
  5. 在终端中我运行ssh-add -D并验证密码不再被缓存。
  6. 使用重新打开远程文件C-x C-f M-p RET
  7. Tramp 无需输入密码即可打开文件。

tramp 调试缓冲区的副本位于这个Pastebin

答案1

Tramp 缓存使用密码。您可以通过以下方式禁用此功能:setq password-cache nil)

相关内容