是否可以有多个 SSH 主机别名?

是否可以有多个 SSH 主机别名?

我有一台笔记本电脑,显然有时可以在我的家庭网络内部或外部。当我需要通过 SSH 连接到网络内的计算机时,连接相当简单:

localhost $ ssh machinelearning

当我尝试从以下位置访问机器时外部我的网络,然后我需要连接到我的路由器,然后从那里连接 SSH:

localhost $ ssh router.mytotallyuniquedomain.com
router $ ssh machinelearning

我记得有一个执行后一个命令的快捷方式~/.ssh/config,但目前我不记得它是什么。

有没有办法让我提供多个主机名或连接类型,以便当我这样做时:

$ ssh machinelearning

SSH 将首先尝试连接到machinelearning本地网络中的主机,然后尝试通过隧道进入router.mytotallyuniquedomain.com,所有这些都不需要我输入长主机名?

答案1

方法#1 - ProxyCommand 和 netcat

我在我的中使用这个设置$HOME/.ssh/config来促进这一点:

Host intserver1-o intserver2-o intserver3-o
    ProxyCommand ssh [email protected] nc `echo %h|sed 's/-o//'` %p

然后我就可以ssh intserver2-o从任何地方进入这个内部服务器。当我在家时使用 LAN ssh intserver1

笔记:上述技巧需要nc在 extserver1 上安装 netcat ( )。

方法#2 - 嵌套 ssh

或者,您也可以使用此方法:

$ ssh -t -l gatewayuser gatewayserver "ssh -l serveruser internalserver"

您基本上是在这个方法中嵌套 SSH 调用。

方法 #3 - ProxyCommand & ssh -W

对于较新版本的 SSH (5.4+),您可以使用ssh而不是nc通过-W交换机。

Host TARGETHOST
ProxyCommand ssh -W %h:%p PROXYHOST

&%h%p用于 的主机名端口的宏TARGETHOST

相关内容