You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH按主机配置代理转发时包含用户名导致失效的原因及多用户配置最佳实践咨询

SSH按主机配置代理转发时包含用户名导致失效的原因及多用户配置最佳实践咨询

Disclaimer:原本我在StackOverflow上提了这个问题,被合理标记为离题,觉得这里更适合讨论。同时我已经找到问题所在了(请看下面的临时解决方案)。

原问题

我用Windows客户端,想通过SSH连接到Ubuntu客户端。

我的以下配置是可行的:

Host myhost
  ForwardAgent Yes

Host myuser@myhost
  HostName myhost
  User myuser

我能正常连接,代理转发也符合预期——在远程机器上运行ssh-add -l能看到本地客户端的身份信息。

但我搞不懂为什么下面这个配置不可行:

Host myuser@myhost
  ForwardAgent Yes
  HostName myhost
  User myuser

这种情况下我能正常SSH连接,但代理转发失效了,在远程机器上运行ssh-add -l会返回:

Could not open a connection to your authentication agent.

在我看来第二个配置只是把两步合并成一步,本质上应该一样啊。
我到底忽略了什么?

我尝试过的方法

有人建议我把@符号换成别的,但没用。
我还做了些小改动,比如把Yes改成小写的yes,但情况也没变化。

临时解决方案

我纯靠试错找到了可行的配置——第一种Host命名方式是没问题的,比如:

Host myhost
    HostName myhost
    User myuser
    ForwardAgent yes

而且我发现,我可以随便改Host的名称,但绝对不能包含User里的用户名?这看起来是个规律。

疑问

  • 有没有人能解释为什么Host里不能包含用户名?
  • 如果我想区分不同用户的配置,最佳实践是什么?我原本的意图是这样配置:
Host user1@myhost
    HostName myhost
    User user1
    ForwardAgent yes

Host user2@myhost
    HostName myhost
    User user2
    ForwardAgent yes

但这行不通。

以下这些配置也都不行:

Host myuser-myhost
    HostName myhost
    User myuser
    ForwardAgent yes

或者

Host myhost-myuser
    HostName myhost
    User myuser
    ForwardAgent yes

或者

Host myhostmyuser
    HostName myhost
    User myuser
    ForwardAgent yes

Host myusermyhost
    HostName myhost
    User myuser
    ForwardAgent yes

甚至这个也不行:

Host mymyuserhost
    HostName myhost
    User myuser
    ForwardAgent yes

我真的搞懵了。那要区分两个不同用户的配置,难道只能用两个不同的配置文件吗?

备注:内容来源于stack exchange,提问作者Pascal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:35:32