[英]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.