Вы пробовали / смотрели на экран ?
Это не совсем то, что вы хотите, но вы можете создать экранное меню, когда захотите получить список, который вы хотите.
У меня была эта идея долгое время, и я попытался реализовать несколько способов, но безуспешно. Пытался многократно гуглить и всегда находил не совсем то, что нужно.
Как сделать:
$ ssh hostA |--------------------------------| | | | | | | | | | | | | | | | root@hostA $ ssh hostB | |--------------------------------| |--------------------------------| | | | | | | | | | | | | | root@hostB $ | | root@hostA $ | |--------------------------------|
Самое близкое решение, которое я придумал, это строка состояния экрана GNU, отображающая ssh from hostA to hostB
(хитрость в том, чтобы использовать $SSH_...
переменные). Было бы неплохо иметь визуальный стек всех соединений (а не только 2).
Вы пробовали / смотрели на экран ?
Это не совсем то, что вы хотите, но вы можете создать экранное меню, когда захотите получить список, который вы хотите.
В ~/.ssh/environment
вы можете установить переменные окружения, которые вы хотите, чтобы пройти через удаленные хосты. Это требует PermitUserEnvironment
настройки, включенной в sshd_config
.
Итак, что вы можете сделать - это .bashrc
какой-либо сценарий, который вы предпочитаете, установить переменную окружения для прохождения:
echo "HOSTPATH=$HOSTPATH-$USER@$HOSTNAME" >> ~/.ssh/environment
Для вашего первого прыжка, HOSTPATH
будет пусто, поэтому ~/.ssh/environment
будет содержать HOSTNAME=-user@host1
.
Когда вы войдете на второй хост, HOSTNAME
env var будет показан, откуда вы пришли. При повторном запуске bashrc HOSTPATH
переменная будет записана в .ssh / enviroment с текущим хостом, добавленным к первому, и готовым к следующему прыжку:
HOSTNAME=-user@host1-user@host2
Каждая надежда приведет HOSTPATH
к добавлению к текущему хосту и готовности к передаче через среду ssh к следующему прыжку.
Вы можете адаптировать это для вашей собственной астетики. Если вы выйдете из хоста и перейдете к другому, он должен автоматически удалить хост, с которого вы пришли по пути, так как он будет использовать текущие .ssh/environment
настройки. Это может даже иметь дело с петлями, я оставлю это как упражнение для читателя :)