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
相关产品推荐
相关产品推荐

