繁体   English   中英

Emacs Tramp 智能卡配置

[英]Emacs Tramp smartcard config

我使用基于 ssh 密钥的身份验证,密钥保存在智能卡上。 我正在迁移到一台新机器,在我以前的机器上,我的工作流程很好地设置了 Emacs+Tramp。

但是,现在我遇到了问题。 我找到了解决方案,但我想知道是否有更好的方法。

设置

如果我有一个包含以下条目的.ssh/config

Host remote
     HostName 1.2.3.4
     User root

remote已授权我的 SSH 密钥,如果我在正常的 shell 中运行ssh remote ,系统会提示我输入我的智能卡密码,并且可以 SSH 没有问题。

但是,在 Emacs 使用流浪汉时,我通常会 ssh 输入文件路径ssh:remote: 但是,在我的全新安装中,它提示我输入用户名,然后是密码。

第一次尝试

按照这个答案的建议,我提高了流浪汉的日志级别。

它告诉我 tramp 正在运行以下命令: exec ssh -o ControlMaster=auto -o ControlPath='tramp.%C' -o ControlPersist=no -e none remote 在正常的 shell 中运行它按预期工作。

我发现在eshell中ssh remote也有同样的问题。

我认为 Emacs 可能无法访问我的~/.bashrc配置,我在其中配置了我的智能卡详细信息:

export GPG_TTY="$(tty)"
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent

解决方案(有更好的吗?)

这个答案建议用bash -c emacs

这最终解决了问题,但是我想知道是否有更强大的解决方案,即在我的config.el文件中编码的解决方案,或类似的解决方案。

可以看到,问题是Emacs和shell环境变量不一致导致的。 您可以使用exec-path-from-shell ,尤其是在您使用 macOS 时。 或者你可以setenv 最后,Spacemacs和Doom有自己的处理方式,我看你提到config.el,不知道你用的是不是Doom,你也可以参考一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM