首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs Tramp智能卡配置

Emacs Tramp智能卡配置
EN

Stack Overflow用户
提问于 2022-04-17 15:02:22
回答 1查看 153关注 0票数 0

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

不过,现在我有问题了。我找到了一个解决办法,但我想知道是否有更好的方法。

设置

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

代码语言:javascript
复制
Host remote
     HostName 1.2.3.4
     User root

remote已经授权了我的SSH密钥,如果我在一个普通的shell中运行ssh remote,我会被提示输入我的智能卡引脚,并且可以在没有问题的情况下获得SSH。

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

首次尝试

按照这个答案的建议,我增加了tramp的日志级别。

它向我展示了tramp正在运行以下命令:exec ssh -o ControlMaster=auto -o ControlPath='tramp.%C' -o ControlPersist=no -e none remote。在正常的shell中运行此操作就像预期的那样。

我发现在地狱运行ssh remote也有同样的问题。

我想也许Emacs无法访问我的~/.bashrc配置,在那里我配置了智能卡的详细信息:

代码语言:javascript
复制
export GPG_TTY="$(tty)"
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent

解决办法(有更好的办法吗?)

这个答案建议与bash -c emacs一起推出Emacs。

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

EN

回答 1

Stack Overflow用户

发布于 2022-04-18 01:42:01

正如您所看到的,这个问题是由Emacs和shell环境变量之间的不一致引起的。您可以使用exec-通道到外壳,特别是在使用macOS时。或者您只需手动setenv即可。最后,Spacemacs和Doom有自己的处理方法,我看到您提到了config.el,不确定您是否在使用Doom,您也可以参考它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71902956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档