Как к ssh к недостижимой удаленной машине путем туннелирования через сервер, которого все могут достигнуть?

Машины:

  • Давайте назовем мой MacBook машины.
  • У меня есть сервер в tah межсетях. Назовите это сервером.
  • У меня есть Mac, Мини-в другом месте, что я могу получить доступ через демонстрацию экрана iChat. Давайте назовем это мини-.

Достижимость:

  • сервер не видит ни MacBook, ни мини-.
  • MacBook видит сервер, но не мини-.
  • мини-видят сервер, но не MacBook.

Демонстрация экрана является медленной. Я хочу соединение SSH к мини-. Прямое подключение невозможно из-за маршрутизаторов, NAT, и т.д.

То, что я хочу сделать, должно подключить и MacBook и мини-к серверу через SSH, создав туннели approriate, так, чтобы от macbook I мог выполнить a ssh … управляйте для соединения с мини-путем туннелирования соединения через сервер.

Таким образом, мой вопрос, какие команды я должен выполнить, на который машины, для создания этой работы?

Для хранения этого простым используйте сервер, мини-, MacBook как имена хостов в ответах.

4
задан 02.08.2010, 11:05

3 ответа

Только один туннель ssh необходим. От мини-:

ssh -N -R 0.0.0.0:8022:localhost:22 serverUser@server

Теперь можно просто соединиться от MacBook на сервер с ssh -p 8022 miniUser@server

Обязательно имейте GatewayPorts набор к yes в сервере /etc/ssh/sshd_config.

Дополнительно можно хотеть определить некоторый материал в ~/.ssh/config:

Host gate.mini
    HostName server
    Port 8022
    HostKeyAlias mini

Это позволяет Вам делать более когерентное ssh miniUser@gate.mini, и в то же время не быть побеспокоенным несоответствиями цифрового отпечатка сервера.

6
ответ дан 07.12.2019, 19:25

На Mac, Мини-, сделайте:

ssh -R 1234:localhost:22 serverUser@server

Это передаст соединения с портом 1234 сервера для портирования 22 на Мини-Mac.

Затем на MacBook сделайте:

ssh -L 1235:localhost:1234 serverUser@server

Это передаст соединения с портом 1235 на MacBook для портирования 1234 на сервере (который будет затем передан Mac, Мини-вышеупомянутой командой).

Наконец, для получения фактического соединения на MacBook сделайте:

ssh -p 1235 miniUser@localhost

Который подключает к порту 1235 на MacBook, который передается порту 1234 на сервере, который передается для портирования 22 на Мини-Mac. Порты 1234 и 1235 могут быть установлены на более или менее независимо от того, что Вы любите - и можете быть тем же (я использовал различные числа для создания объяснения более четким). Точно так же порт 22 должен быть изменен, если SSH на Вашем Мини-Mac слушает на другом порте.

4
ответ дан 07.12.2019, 19:25

Можно туннелировать любая команда через ssh сессию. Это означает, что можно также туннелировать команда ssh через ssh.

Это было бы похоже на это:

ssh -t userOnServer@url.of.server ssh userOnMini@url.of.mini

Это открывает ssh сессию для сервера и оттуда немедленно открывает вторую ssh сессию для мини-. С туннелем ssh это должно работать без проблем от Вашей машины MacBook. По крайней мере, учитывая, что мини-достижимо с сервера.

Требования:

  • ssh на MacBook
  • сервер ssh и ssh клиент на сервере
  • сервер ssh и ssh клиент на мини-

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

0
ответ дан 07.12.2019, 19:25

Теги

Похожие вопросы