如何对多个主机地址/端口/等使用相同的 SSH 别名?

use*_*686 4 ssh openssh alias

问题是:我试图在不同时间通过 SSH 连接到一个系统,该系统至少可以从 3 个不同的网络访问——有时是直接访问,有时是通过代理访问。

直接连接比通过中间主机连接更快、更可靠,这又比通过一般互联网连接更快、更可靠,所以我希望 SSH 尝试以 3 种不同方式以优先方式进行连接,选择首先成功。

显然,它们都是同一台机器,所以我不想继续根据我从哪里连接到 3 个不同的别名之间手动选择。

但是,我找不到任何解决此问题的机制。是否有可能做到这一点,或者没有?

如果不是,人们在这种情况下通常会做什么?

Jak*_*uje 6

不要使用别名进行ssh连接!使用适当的ssh_config~/.ssh/config。它有一些真正强大的功能。

假设您可以识别您所在的网络。例如使用您的 IP,例如可以使用hostname -I. 所以让我们写一些配置:

# in network1 I am getting ip from "10.168.*.*" and I need to connect through proxy
Match Host myalias Exec hostname -I | grep 10\.168\.
  Hostname real-host-IP
  ProxyCommand ssh -W %h:%p proxy-server

# in network2 I am getting IP from "192.168.*.*" and I do not need a proxy
Match Host myalias Exec hostname -I | grep 192\.168\.
  Hostname real-host-IP

# in network3 I am getting something else
Run Code Online (Sandbox Code Playgroud)

我相信你明白了...