如何欺骗SSH连接使用基于当前位置的不同configuration?

这里是下面的用例:想在3种情况下ssh server1

  • server1在当前的networking上,去做
  • server1不在当前networking中,并且您需要使用网关(gw1)来访问它,这不是一个大问题,因为您可以使用~/.ssh/config为此定义隧道
  • 你在一个不允许你访问第一个gw1的networking上,所以你会使用gw2。

期望的结果:能够使用相同的命令并能够连接到服务器。

你已经暗示了解决scheme已经和dave4420的额外提示我有点觉得我通过发布答案作弊。

本质上, ssh-config ProxyCommand指令解决了两个非本地情况下的“如何连接”问题。 剩下的问题归结为“我如何使用一个命令,而忽略找出使用哪个案例的问题”。

  • 在.ssh / config文件中为以下三种情况中的每一种定义主机昵称:主机server1a,主机server1b,主机server1c。

  • 定义第四个昵称,这将是您连接到此服务器的命令,始终是:主机server1。

  • 写一个脚本,实现你在问题中定义的逻辑。 我不能在这里伪代码,因为我不知道你用什么testing来确定你所处的三种情况。在这三种情况下,你都有一个ssh命令来使用,例如ssh server1a 。 使用此脚本作为第四个昵称的ProxyCommand

现在ssh server1根据上下文被代理到ssh server1[abc]

更多关于ProxyCommand的愚蠢的SSH技巧 。