я использую ssh root@my.server.ip -g -L 4321:localhost:28017
чтобы установить туннель от моего MacBook к выделенному серверу у моего хостинг-провайдера. Это работает хорошо. Теперь я хочу получить доступ к нескольким административным сайтам на удаленном сервере (страница состояния MongoDB, страница RabbitMQ и т. Д., Все на разных портах). Все они привязаны к 127.0.0.1 на удаленной машине. Как я могу настроить эту команду ssh на
Возможно ли это с помощью ssh? Я читал страницы руководства и искал в Google уже два дня, но, похоже, это не работает.
--edit 2012-06-01 23: 36-- Благодаря предоставленным ответам и комментариям переадресация портов теперь работает с использованием
ssh user@remote.server -D 4321
Я могу настроить это как прокси в моем браузере, и браузер будет обрабатывать любой запрос к localhost: anyport, как если бы он был сделан на удаленном сервере. В использовании имени теперь нет необходимости, поскольку браузер предназначен только для удаленных серверов.
Вы можете назначить имя, используя тот факт, что ваш адаптер обратной связи будет в основном отвечать на любой адрес в сети 127.0.0.0/8.
Поэтому вместо привязки к порту 4321 вы можете привязать к 127.1.2.3:4321. Затем просто настройте запись хоста, которая сопоставляет имя с адресом обратной связи, который вы использовали, чтобы foo.bar сопоставлялся с 127.1.2.3
.
В моей конфигурации SSH на моей административной рабочей станции у меня настроено много туннелей так, что они привязываются к некоторому адресу в диапазоне обратной связи, и у меня есть записи в моем файле хоста, поэтому я открываю много туннелей параллельно, используя один и тот же порт, и различаю их через название.
Итак, если вы подключитесь вот так
ssh root@my.server.ip -g -L 127.1.2.3:4321:localhost:28017
И в вашем файле hosts есть такая строка.
127.1.2.3 my.tunnel.name
После этого вы сможете подключиться к my.tunnel.name:4321 со своего локального компьютера.
Если у вас есть дополнительное пространство IP-адресов в сети, к которой подключен ваш ssh-клиент, вы можете даже назначить вторичный адрес своему интерфейсу Ethernet и использовать один из ваших реальных IP-адресов, а затем настроить записи в вашем DNS, если вы хотите, чтобы другие системы могли использовать свой SSH-туннель.
Параметр -L -L [bind_address:]port:host:hostport
позволит вам использовать любой действительный IP-адрес в локальной системе для привязки. Вам нужно включить -g
вариант, если вы хотите, чтобы другие хосты могли подключаться через ваш туннель ssh.
То, что вы описываете, невозможно. Но есть еще хорошие новости:
Однако возможно установить динамическое соединение с SSH-сервером. Это откроет порт на вашем локальном компьютере, на который вы можете указать настройку прокси в вашем браузере и позволить вам использовать туннель в качестве прокси-сервера. Но вы должны ввести имя хоста / ip и порт в браузере, как если бы браузер был запущен на машине, на которой установлен SSH-сервер.
Команда выглядит так: ssh user@server.example.com -D 1234
Затем укажите прокси-сервер вашего браузера на localhost:1234
.
Итак, если вы туннелируете на сервер A и хотите подключиться к серверу B, вы вводите в свой браузер любой адрес, который вы вводите в браузере, работающем на сервере A. Если браузер, работающий на сервере A, не может подключиться к серверу B (если процесс на сервере B слушает только 127.0.0.1), то вы все равно не можете подключиться. Похоже, у вас всего один сервер, но я хотел убедиться, что это ясно.
Если у вас есть только один сервер, вы туннелируете к нему с помощью динамического соединения и настраиваете прокси. Затем вы сможете ввести «localhost: 1234» (например) в браузер, и он подключится к службе, запущенной на удаленном сервере через порт 1234.
Примечание Securit: никогда не устанавливайте сервер, на котором root может подключиться по SSH! Серьезный недостаток безопасности. Создайте обычную учетную запись пользователя (которой разрешено использовать su или sudo) и SSH в качестве этого пользователя.
Создайте динамическую переадресацию портов на уровне приложения (в основном, прокси-сервер socks) с помощью туннеля SSH, а затем направьте свои приложения через этот туннель. Чтобы создать динамический туннель, подключитесь следующим образом:
ssh user@host.domain.com -D 127.0.0.1:31337
Затем настройте свое приложение для использования его в качестве прокси-сервера SOCKSv5.
Если вы хотите привязать к нему имя хоста, просто добавьте /etc/hosts
записи, которые указывают на 127.0.0.1, но более красивым способом могло бы быть добавление 127.0.0.2 для первого туннеля и записи хостов для этого, 127.0.0.3 для второго туннеля и отдельной записи хоста для этого и т. д. Если вы добавляете псевдонимы для 127.0.0.1, иногда этот псевдоним будет появляться в других поисках команд на localhost, что может сбивать с толку!
Чтобы беспрепятственно использовать это в веб-браузере, вы можете использовать надстройку прокси, в качестве примера я предпочитаю веб-браузер Chrome, а для этого я использую надстройку под названием Proxy Switchy!
. Вы можете скачать это здесь:
https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj
В конфигурации этого дополнения я могу определить несколько отдельных прокси, а затем связать регулярные выражения хостов / URL-адресов для использования определенных прокси, таким образом я всегда буду правильно перенаправлен через правильные туннели без необходимости вручную переключаться. Пожалуйста, дайте мне знать, если вам нужны дополнительные разъяснения по любому из шагов!