Рейтинг:0

Автоматизируйте перенаправление портов ssh с помощью DNS

флаг cn

У меня есть несколько хостов ssh (десяток), для простоты хост1, хост2, и т.д.

Мне часто нужно перенаправить порт, например.

ssh -L 8888: локальный: 8888 хост1
ssh -L 8889: локальный: 8888 хост2
ssh -L 8890: локальный: 80 хост2

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

Я хотел бы реализовать какую-то систему, которая прослушивала определенные хосты (локально, на моей машине), например. host1.8888.ssh.local и открыл туннель на этот адрес автоматически.

anx avatar
флаг fr
anx
Похоже, что добавление нескольких статических имен хостов через `/etc/hosts` и определение ассоциаций localport/remoteport через активацию сокета systemd может автоматизировать это.
флаг cn
@anx звучит очень разумно
Рейтинг:3
флаг kz

Вы можете настроить все это внутри конфигурационного файла ssh, который обычно находится по адресу: $HOME/.ssh/config

Например:

Хост abc
    Имя хоста 1.2.3.4
    Порт 345
    IdentityFile /path/to/id_rsa
    LocalForward 8888 локальный хост: 8888
    Корень пользователя
Определение хоста
    Имя хоста 2.3.4.5
    Корень пользователя
    LocalForward 8889 локальный хост: 8889

Таким образом, вам просто нужно ввести ssh абв и все ваши настройки, которые вы укажете там, будут применены. Доступные параметры находятся внутри справочная страница.

флаг cn
Спасибо, я знаю об этой опции в конфигах ssh. Не решает основных моментов: запоминание портов и ручное открытие портов
флаг us
Что вы подразумеваете под "ручным открытием портов"? И я не понимаю, почему это не решит проблему "запоминания портов"? Порты хранятся в конфигурации, и вам нужно запомнить только имена хостов, которые вы назначаете в конфигурации.
Martin avatar
флаг kz
@TeroKilkanen прав. Даже если вы забыли назначенное имя хоста, вы все равно можете просто заглянуть в конфигурацию, чтобы проверить, какие хосты вы там определили.
флаг cn
Это означает, что вам все еще нужно ssh. Туннель должен открываться автоматически
флаг cn
`запомните имена хостов, которые вы назначаете в конфигурации` правильно, этот шаг следует исключить. Для пользователя (в данном примере - меня) должна быть возможность использовать имя хоста машины для использования туннеля
Martin avatar
флаг kz
Как уже было сказано, вы можете использовать любое имя в качестве имени определения хоста, поэтому совершенно нормально использовать имя хоста машины внутри определения хоста. У вас есть все, что вам нужно, чтобы автоматизировать это, вам просто нужно поместить все команды ssh (с ```-fN``` ) в скрипт и поместить этот скрипт в ваши файлы запуска...
флаг cn
Как уже было сказано, я хорошо разбираюсь в конфигах ssh. Сохранение дюжины связей не кажется мне хорошей идеей. Когда блокнот запущен, интернета может вообще не быть, потому что я могу быть в поезде. Система должна работать для нескольких пользователей и позволять им не запоминать порты (причем заданные не ими).
флаг cn
Я могу повторить: это решение не имеет ничего общего с требованиями, указанными в вопросе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.