LINUX.ORG.RU

Проброс портов по SSH

 ,


0

1

Доброго времени. Подскажите пожалуйста, т.к. не совсем понимаю, как это работает:

На удаленной машине (винда, хх.ххх.хх.хх, порт 1011) есть виртуальная машина с Linux (в настройках машины настроен проброс со 127.0.0.1 (порт 5555) на линуксовый 10.0.2.15 (порт 22)).

Попытался проброситься через винду (порт 1011) сразу на Linux:

ssh -L user@127.0.0.1:5555 user@хх.ххх.хх.хх -p 1011

ну или так:

ssh -L 8888:user@127.0.0.1:5555 user@хх.ххх.хх.хх -p 1011

вроде все делал по инструкции, но могу войти только на винду, до Ubuntu (ну или до виртуальной машины 127.0.0.1) не «добивает».

А вот если сделать джампинг - влетаю как по маслу, по ключу прямо на Linux:

ssh -J user@хх.ххх.хх.хх:1011 user@127.0.0.1 -p 5555

С чем связно, почему просто проброситься не получается?

Заранее спасибо за ответы.

Доброго времени

Не пиши так никогда. Хотя это конечно лучше чем «суток», но совсем чуть-чуть.

в настройках машины настроен проброс со 127.0.0.1 (порт 5555) на линуксовый 10.0.2.15 (порт 22)

Где настроено? В гипервизоре виртуалки?

через винду (порт 1011)

Винда это плохо. Но к твоей проблеме это наверно не относится.

ssh -L user@127.0.0.1:5555 user@хх.ххх.хх.хх -p 1011

У ключа -L совсем другой синтаксис. Тебе надо сначала подключиться к хостовому ssh и указать проброс порта:

ssh -L 127.0.0.1:12345:127.0.0.1:5555 user@хх.ххх.хх.хх -p 1011

Затем уже подключиться к проброешнному порту:

ssh user@127.0.0.1 -p 12345

Вместо числа 12345 может быть любо другое на твой выбор. Я вообще удивлён что на твой -L user@ оно не выдало ошибку синтаксиса.

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

Не пиши так никогда. Хотя это конечно лучше чем «суток», но совсем чуть-чуть.

Спасибо, хорошо. А как лучше?

Где настроено? В гипервизоре виртуалки?

Oracle VM, в ее настройках.

Винда это плохо. Но к твоей проблеме это наверно не относится.

Пытаюсь освоить Linux и уйти с винды. Но пока вынужден совмещать обе системы.

Затем уже подключиться к проброешнному порту

Вот здесь не очень понял. Задача была входить в Линкус одной командой, «сквозняком» через винду. Если в два этапа - я и так вначале входил на винду по ssh, а потом вторым этапом - на VM. Попробавал сделать по Вашей инструкции:

ssh -L 127.0.0.1:22:127.0.0.1:5555 user@хх.ххх.хх.хх -p 1011

опять остановился в винде, в нее вошел, и все. В Линкус либо набирать вторую команду, либо джампигом… Может быть - потому что линукс в другой подсети? Но сколько смотрел видео, на сайтах сегодня - никто не говорил, что это может быть проблемой…

kimalex
() автор топика
Ответ на: комментарий от kimalex

Спасибо, хорошо. А как лучше?

Например «Всем привет» или «Здравствуйте».

В Линкус либо набирать вторую команду, либо джампигом…

Ну да. Так ты получается всё и так знаешь, а в чём вопрос тогда?

Чтобы подключиться к внутреннему ssh, надо сначала подключиться к внешнему и пробросить через него порт. Это, по-хорошему, две команды, но даже тут сделали «джампинг», который их упаковывает в одну. А что ты хочешь?

Вот картинка https://i.ibb.co/HrT0GsK/lor17781452.png

Синее и зелёное - это две ssh-сессии. Пока ты синее не создашь, зелёное никак не сделать т.к. виртуалка видна только изнутри удалённой машины.

-J делает ровно то же самое, это просто удобный синтаксис чтобы два ssh-а запускать одной командой.

Если хочешь чтобы виртуалка была видна без первого ssh - то пробрось её порт наружу (не на 127.0.0.1 а на публичный адрес удалённой машины) в настройках гипервизора.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от kimalex

ssh -L 127.0.0.1:22

А да, я забыл уточнить этот момент. 22-й порт тут делать не надо. По умолчанию его даже не дадут назначить, только 1024 и выше, если ты не root. А если root и назначишь - можешь этим навредить локальному ssh-серверу.

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

А что ты хочешь?

Да понимаете, пытаюсь разобраться, как это все работает. Во всех видео, что посмотрел - даже обычным Port Forwarding я должен был попасть в линукс, там показывали, как через комп с SSH-сервером попадали на docker или вообще на третий комп в сети. Я решил, что виртуалка с линуксом не чем не отличается от докера или 3-го компа - но у меня не получилось. Если с помощью проброса можно попасть на 3-й комп, чем это тогда от джампинга отличается?….

kimalex
() автор топика
Ответ на: комментарий от kimalex

Я ж там написал ниже, что ничем, джампинг это просто удобный синтаксис чтобы две команды в одну объединить.

Чтобы попасть в линукс без второго ssh, пробрось этот порт наружу в настройках виртуалки на удалённой машине.

Вместо

в настройках машины настроен проброс со 127.0.0.1 (порт 5555) на линуксовый 10.0.2.15 (порт 22)

сделай проброс с xx.xx.xx.xx:5555 на 10.0.2.15:22

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

Вот, например:

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER

Это в статье приводилось, как обычный форвардинг, здесь

DESTINATION:DESTINATION_PORT

  • это то, куда мне надо было попасть.

А не попадаю…

kimalex
() автор топика
Ответ на: комментарий от firkax

сделай проброс с xx.xx.xx.xx:5555 на 10.0.2.15:22

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

kimalex
() автор топика
Ответ на: комментарий от kimalex

Это и есть форвардинг. Ты вводишь эту команду, после чего у тебя появляется проброшенный порт. Про то, что в проброшенный порт ssh сам начнёт ломиться, там же не было написано?

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

xx.xx.xx.xx это чей айпи, винды или какого-то роутера к которому она подключена?

Это статический ip роутера, на роутере соответственно свой проброс на строен по ssh. Если быть точный - то в локальной сетки адрес этой удаленной машины с виндой 192.168.1.5, порт 1011

kimalex
() автор топика
Ответ на: комментарий от firkax

Прошу прощения, не очень понял, что куда надо пробросить… Моя изначальная схема такая:

захожу по ssh на:

роутер хх.ххх.хх.хх (порт ssh 1011), там настроена передаресация, и он сам отправляет меня на c порта 1011 на:

192.168.1.5 (порт 22). Это машина с виндой.

На винде есть VM с линуксом (127.0.0.1, порт 5555, в настройках указано, что дальше он сам меня отправит на 10.0.2.15, порт 22)

Раньше я первым этапом делал:

ssh user@хх.ххх.хх.хх -p 1011 - и попадал в винду. Там в командной строке снова набирал:

ssh user@127.0.0.1 -p 5555 - и попадал в свой линукс

Когда увидел, что есть возможность сделать это одной командой:

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER

попробовал, но не получилось в одну команду до линукса добраться.

Выяснил, что есть джампинг, сделал все с ним.

Но сейчас стараюсь разобраться, зачем вообще нужна эта конструкция с ssh -L, с указанием адресов и портов всех 3 машин, если все равно же требуется вторая команда, когда я раньше и без этого аргумента все делал в два этапа.

kimalex
() автор топика
Ответ на: комментарий от kimalex

-L — это tcp-тунель, по нему можно любой трафик пускать, не обязтельно ssh. То есть можно нешифрованый трафик пропускать через инет. И, второе, там можно много таких соединий. То есть один раз запустить ssh -L, а потом несколько раз подключиться к LOCAL_PORT.

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

если все равно же требуется вторая команда, когда я раньше и без этого аргумента все делал в два этапа.

Тут разница такая: то что ты делал раньше - второе ssh запускается уже на удалённом компе. Если через -L или через -J - то второе ssh запускается на твоём же клиенте. Возможно, на первый взгляд заница не видна, но она есть весьма большая в плане безопасности (в пользу второго варианта). Первый же подвержен краже паролей и вообще всего, если кто-то взломает промежуточный хост.

firkax ★★★★★
()

У виндовой putty есть фикня (ищи в настройках) проброс портов. Если у тебя есть доступ к серверу sshd то ты можешь сделать проброс портов (от себя) к ЕГО локалке не меняя ничего на сервере.

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