LINUX.ORG.RU

Автовыбор HostName для хоста в .ssh/config в зависимости от локального ip

 , ,


0

2

Вот есть у меня домашний десктоп/сервер, я с нескольких девайсов на него постоянно хожу по SSH. Проблема в том, что в домашней локалке и во внешней сети у сервера разные ip. Плюс, на нём поднят openvpn, и, при наличии туннеля, логично через него же и ходить, что добавляет к списку ещё один айпишник. Итого, у меня для одного хоста три идентичных записи в .ssh/config, в которых недолго и запутаться.

Можно ли как-нибудь обустроить так, чтобы запись была одна, но параметр HostName налету выбирался исходя из подсети, в которой в данный момент находится клиент?

★★★★★

Последнее исправление: Axon (всего исправлений: 2)

слишком много ненужных деталей, которые отвлекают от идеального варианта решения, какие-то там .ssh/config приплёл, какие-то «логичные» туннели...
переформулируй ТЗ что именно тебе нужно получить, без подмешивания своих фантазий на тему как именно это будет получено

zolden ★★★★★
()
Ответ на: комментарий от edigaryev

Точняк! Про это я почему-то не подумал. Правда, как-то уж больно наворочено получается, целый демон ради такой фигни держать.

Axon ★★★★★
() автор топика

Можно подменять config при подключении(например делать симлинк на нужный файл), тут надо смотреть на хуки того, что занимается сетью. Либо в ~/.bashrc определить функцию ssh, которая вначале будет смотреть на локальный ip и вызывать command ssh со всеми переданными опциями + нужный конфиг.

А почему бы просто не ходить по внешнему ip? Дальше роутера трафик не уходит

disarmer ★★★
()
Ответ на: комментарий от zolden

Что тут непонятного? Есть хост, скажем, home. У него есть три сетевых интерфейса с IP из трёх разных подсетей. Я к нему подключаюсь попеременно из всех трёх подсетей. Хочу сделать так, чтобы, набирая ssh home, я всегда получал желаемое.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от disarmer

Можно подменять config при подключении(например делать симлинк на нужный файл), тут надо смотреть на хуки того, что занимается сетью.

Думал об этом. Костыльно, но, похоже, проще всего. netctl, вроде бы, должна позволять такое.

Либо в ~/.bashrc определить функцию ssh, которая вначале будет смотреть на локальный ip и вызывать command ssh со всеми переданными опциями + нужный конфиг.

Не прокатит для всяких rsync, sshfs, xpra и т. д.

А почему бы просто не ходить по внешнему ip? Дальше роутера трафик не уходит

Загвоздка в магически настроенной маршрутизации у провайдера. Он выдаёт мне IP из своей подсети, которая не видна снаружи, и с него уже форвардит всё на другой IP, который виден снаружи, но не виден изнутри.

Axon ★★★★★
() автор топика
Ответ на: комментарий от Waldo-de-Kard

[почти оффтоп] Если есть белый и пушистый условно постоянный IP у хоста, то проблема высосана из пальца, надо сказать.

Он, сцуко, белый и даже постоянный, но колючий. См. выше.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)

у тебя мобильный девайс (условно ноутбук) с которого ты подключаешься к серверу с разных подсетей. в хуке на ifup повесь подмену записи в /etc/hosts адрес сервера. при поднятии интерфейса ноутбука сменится адрес сервера в файле хостс

sdio ★★★★★
()

Проблема в том, что в домашней локалке и во внешней сети у сервера разные ip

Вот именно эта проблема решается при помощи NAT loopback на роутере, тогда обращение к нему по внешнему адресу приведёт к срабатыванию проброса портов. Не все, правда, умеют. Иногда возможно сделать вручную.

другой IP, который виден снаружи, но не виден изнутри

Тогда ой.

AITap ★★★★★
()
Последнее исправление: AITap (всего исправлений: 2)
Ответ на: комментарий от sdio

у тебя мобильный девайс (условно ноутбук) с которого ты подключаешься к серверу с разных подсетей. в хуке на ifup повесь подмену записи в /etc/hosts адрес сервера. при поднятии интерфейса ноутбука сменится адрес сервера в файле хостс

Блин, на поверхности же лежало! Спасибо, бро, ушёл настраивать netctl.

Axon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.