gpt4 book ai didi

ssh - 在服务器模式下使用来自 emacs 的 ssh 代理

转载 作者:行者123 更新时间:2023-12-04 18:59:11 24 4
gpt4 key购买 nike

我在服务器模式下运行 emacs 作为 systemd 用户服务,并希望使用 magit 从经过公钥验证的远程存储库中提取。不幸的是,magit(或其 git 子进程)无法使用我已经加载的公钥。显然,我无法从 emacs 的上下文中连接到我的 ssh-agent。

从 emacs 中运行:

~ ssh-add  
Could not open a connection to your authentication agent.

是否有解决该问题的已知方法,或者我是否必须深入研究 ssh-agent 和客户端的实际通信方式?

最佳答案

我用 keychain管理 ssh 代理。它启动代理并将相关参数(代理 PID 和套接字)转储到可由 shell 获取的脚本中。有一个 Emacs 包 keychain-environment可以将其拉入 Emacs。~/.bash_profile :

# keychain manages ssh-agents
type keychain >&/dev/null \
&& keychain --agents ssh
这开始运行 keychain在登录时,这将启动 ssh-agent并将其信息转储到文件中。 keychain是幂等的,因此后续登录(例如使用 ssh 登录)不会启动新的 ssh-agent如果它已经在运行。 ~/.bashrc :
# keychain keeps track of ssh-agents
[ -f $HOME/.keychain/$HOSTNAME-sh ] \
&& . $HOME/.keychain/$HOSTNAME-sh
这允许任何新 shell 重用代理。我认为这实际上与 Emacs 无关,但显然很有用。 ~/.emacs.d/init.el :
(require 'keychain-environment)
(keychain-refresh-environment)
这会将代理信息加载到 Emacs 中,因此 Emacs 可以与其对话(或者更准确地说,由 Emacs 启动的任何 ssh 进程都可以看到相关的环境变量)。

关于ssh - 在服务器模式下使用来自 emacs 的 ssh 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com