使用 gpg-agent 转发的 ssh 失败,并显示“侦听路径的远程端口转发失败”

使用 gpg-agent 转发的 ssh 失败,并显示“侦听路径的远程端口转发失败”

使用转发连接到远程计算机的 SSHgpg-agent失败,但可以在其他计算机上使用。我无法使用本地凭据从远程计算机进一步进行 ssh gpg-agent

ssh -Avvv user@remotehost显示此警告:

Warning: remote port forwarding failed for listen path /Users/user/.gnupg/S.gpg-agent

连接到远程主机后,我看不到任何有效的可用 ssh 密钥:

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

答案1

ssh -A我在 macOS 上远程工作时遇到过这种情况,但对于您想要转发的任何其他操作系统也是如此gpg-agent

  1. 确保您连接到远程主机的信息~/.ssh/config正确无误。另外,请确保您在从您的连接时<local_host>使用此地址<remote_hostname>或 IP<local_host>ssh -A <remote_username>@<remote_hostname_or_ip>。注意macOS 使用/Users/username主目录不是/home/username!!复制粘贴现有配置时要保持警惕。下面的例子:
Host <remote_hostname_or_ip>
    HostName <remote_hostname_or_ip>
    User <remote_username>
    RemoteForward /Users/<remote_username>/.gnupg/S.gpg-agent /home/<local_host_username>`/.gnupg/S.gpg-agent.extra
  1. 确保您的<local_host> gpg-agent配置包含enable-ssh-supportline 并且pinentry-program正确且可操作(使用时它应该要求您提供 pin ssh),例如:
enable-ssh-support
pinentry-program /usr/local/bin/pinentry
  1. 确保你的<local_host> gpg-agent正在运行。尝试连接到可用的已知主机。您可以重新加载 gpg-agent,它应该返回OK状态:
% gpg-connect-agent reloadagent /bye
OK
  1. 确保您使用的ssh -A开关相当于给定远程主机的ForwardAgent yesin 。~/.ssh/config如果您总是想转发不带参数的代理,请使用第二个选项-A

  2. 最重要的:确保远程主机没有SSH_AUTH_SOCK设置否则,您的本地计算机gpg-agent将不会转发到远程计算机,并且它不会使用您的本地凭据!unset SSH_AUTH_SOCK如果您手动设置该变量,则可以。如果您的远程主机 shell ~/.profile(或类似的)生成gpg-agent并设置SSH_AUTH_SOCK它也将覆盖您的本地主机代理套接字并且它将无法工作 - 注释掉:

#/usr/local/bin/gpg-agent --daemon
#SSH_AUTH_SOCK="$HOME/.gnupg/S.gpg-agent.ssh"; export SSH_AUTH_SOCK

答案2

在连接到 Fedora 34 服务器的 Fedora 34 笔记本电脑上,我收到“监听路径的远程端口转发失败”警告。

对我有用的是删除指定的文件,退出 ssh 会话,然后再次连接......

❯ gpg-agent --daemon
❯ ssh myserver
Warning: remote port forwarding failed for listen path /run/user/1000/gnupg/S.gpg-agent
[me@myserver] $ rm /run/user/1000/gnupg/S.gpg-agent
[me@myserver] $ exit
❯ ssh myserver
[me@myserver] $ gpg-agent # Verify that gpg-agent is working
gpg-agent[159856]: gpg-agent running and available

我每次都必须这样做。

然后我尝试按照此处的建议添加StreamLocalBindUnlink yes到服务器的文件:/etc/ssh/sshd_confighttps://wiki.gnupg.org/AgentForwarding

此后,我再也没有收到过警告消息。

相关内容