У меня была эта идея долгое время, и я попытался реализовать несколько способов, но безуспешно. Пытался многократно гуглить и всегда находил не совсем то, что нужно.
Как сделать:

$ ssh hostA

|--------------------------------|
|                                |
|                                |
|                                |
|                                |
|                                |
|                                |
|                                |
| root@hostA $ ssh hostB         |
|--------------------------------|

|--------------------------------|
|                                |
|                                |
|                                |
|                                |
|                                |
|                                |
| root@hostB $                   |
| root@hostA $                   |
|--------------------------------|

Самое близкое решение, которое я придумал, это строка состояния экрана gnu, отображающая ssh from hostA to hostB (хитрость заключается в использовании переменных $SSH_... ). Было бы неплохо иметь визуальный стек всех соединений (а не только 2).

2 ответа2

1

В ~/.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 . Это может даже иметь дело с петлями, я оставлю это как упражнение для читателя :)

1

Вы пробовали / смотрели на экран?

Это не совсем то, что вы хотите, но вы можете создать экранное меню, когда захотите получить список, который вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .