Возможно ли иметь несколько псевдонимов хоста 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откуда угодно и попасть на этот внутренний сервер. Когда я дома в локальной сети я использую 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.

Связанный контент