ssh переадресация портов с пользовательским именем хоста

Похоже, что исходный bzip был извлечен примерно в 1998 году из-за проблем с патентами, связанных с используемым арифметическим сжатием. на самом деле только чтение Википедии) обнаруживает заархивированную ссылку на сайт bzip2 примерно того времени .

Вот соответствующий раздел, подробно описывающий это и другие различия:

Как это соотносится с вашим предыдущим предложением (bzip-0.21)?

bzip2 - это переработанная и переработанная версия 0.21.Внешне он выглядит довольно похоже, но был почти полностью переписан (несколько раз :-). Важные отличия:

  • Без патентов! (Надеюсь; см. Заявление выше). bzip-0.21 использовал арифметическое кодирование; bzip2 использует кодирование Хаффмана, которое обычно не считается проблемным с точки зрения патента. Обе программы основаны на преобразовании Барроуза-Уиллера, но, насколько мне известно, оно тоже не запатентовано.

  • Быстрее, особенно при декомпрессии. bzip2 распаковывает более чем на 50% быстрее, чем 0,21, в основном из-за использования кода Хаффмана. Я также улучшил скорость сжатия, хотя и не так сильно - возможно, она сжимается на 30% быстрее, чем 0,21.

  • Восстановление после ошибок носителя. Обе программы сжимают данные блоками, по умолчанию длиной 900 КБ. При использовании bzip2 каждый блок обрабатывается полностью независимо, имеет собственную контрольную сумму и ограничен 48-битной последовательностью. Итак, если у вас есть поврежденный сжатый файл, bzip2 может извлечь сжатые блоки, определить, какие из них не повреждены, и распаковать их.

  • Тестовый режим. Вы можете проверить целостность сжатых файлов, не распаковывая их. Я должен был поставить это в 0.21, правда, но поленился (+ выгорел от взлома к тому времени, когда я его выпустил).

  • Намного лучше обрабатывает повторяющиеся файлы. Такие файлы - худший вариант для любого компрессора сортировки блоков. bzip2 работает примерно в десять раз быстрее, чем 0.21 для таких файлов.

  • Поддержка небольших машин. bzip2 может распаковать любой созданный файл размером 2300 КБ, что означает, что вы можете распаковывать файлы на 4-мегабайтных машинах.Пиковое использование памяти во время сжатия также сокращается примерно на 900 КБ по сравнению с 0,21 до примерно 6400 КБ.

  • Лучшая обработка флагов. В частности, поддерживаются длинные флаги (--like --this), что упрощает использование.

  • Однострочное стартовое сообщение, напечатанное 0,21, пропало. Это была функция, на которую чаще всего жаловались 0.21. Сейчас он даже меня глючит.

Я больше не распространяю 0.21, потому что это увековечивает проблемы с патентами, что гарантирует, что программа никогда не получит широкого распространения. Жаль, потому что это полезная программа, и многим она, кажется, нравится. Если вы уже используете версию 0.21, обновите ее до bzip2. К сожалению, я не могу заставить bzip2 распаковывать файлы .bz 0.21, так как это сделало бы попытку обхода патентов бессмысленной. Я знаю, что изменение форматов файлов болезненно; с этого момента я постараюсь внести любые дальнейшие изменения обратно совместимым способом.

Это также ссылка на распакованную версию исходного кода bzip для всех, кто хочет поиграть с ней.

1
06.12.2018, 17:55
3 ответа

Да; Вы можете сделать IP для каждого хоста на вашем локальном ящике

ip address add 122.0.0.2/32 dev eth0
ip address add 122.0.0.3/32 dev eth0

и отредактируйте файл hosts

echo "127.0.0.2 remotehost1.com" >> /etc/hosts
echo "127.0.0.3 remotehost2.com" >> /etc/hosts

затем перенаправить каждый IP-адрес на IP-адрес хоста (прямой доступ через домен будет прерван изменением файла hosts)

ssh user@$remotehost1_IP -L 127.0.0.2:80:localhost:1234
ssh user@$remotehost2_IP -L 127.0.0.3:80:localhost:1234

затем используйте веб-браузер как обычно

http://remotehost1.com
http://remotehost2.com

Это позволит туннелировать каждое удаленное полное доменное имя через его собственный ssh-туннель на его собственном локальном IP-адресе.

1
28.01.2020, 02:11

Когда вы устанавливаете перенаправление портов по ssh -, вы устанавливаете мост между портом наyour_machine:port(с точки зрения вашей машины )и machine:portс точки зрения машины, к которой вы подключились.

Другими словами -если вы вызываете команду

ssh user@remotehost -L 1234:localhost:4567

вы устанавливаете ssh-соединение с remotehostплюс, если вы подключаетесь к порту 1234на вашем компьютере(localhostадрес для вас )удаленная часть вашего ssh-соединения попытается установить соединение сlocalhost(сама с собой -, так как localhostна remotehostбудет указывать на себя )на порту4567

Вернемся к существу вопроса.

Если у вас есть другие службы на порту 1234на вашем компьютере, вместо этого вы можете выбрать другой свободный порт на вашем компьютере.

-1
28.01.2020, 02:11

Когда вы делаете

ssh user@a.company.com -L 1234:localhost:5678

на хосте b.company.com происходит следующее:

  • На хосте B ssh начинает прослушивать порт 1234.
  • На узле А выполняется подключение к localhost(, то есть к узлу А снова )через порт 5678.
  • Трафик на этих двух конечных точках перенаправляется через соединение ssh между A и B.

Таким образом, конечным результатом является то, что вы можете получить доступ к порту 5678 на хосте A, используя порт 1234 на хосте B.

Причина, по которой вы должны ввести localhost, заключается в том, что хост A также может быть "сервером перехода", то есть точкой входа в какую-либо защищенную сеть. Таким образом, если вы не можете получить доступ к узлу C напрямую с узла B, но можете получить доступ к узлу A с узла B и к узлу C с узла A, вы можете выполнить

ssh user@a.company.com -L 1234:c.company.com:5678

, который установит соединения между хостами B и A и между хостами A и C, а также туннелирует порт 5678 на хосте C с портом 1234 на хосте A.

Это имеет два следствия:

  • Если вы уже используете порт 1234 на своем клиенте (хост B )для других служб, вы не можете использовать его для туннелирования. Вам нужно использовать другой порт (, но есть из чего выбрать ).

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

Так что нет, то, что вы хотите, так не работает.

Редактировать

Если это было недостаточно ясно :Вы можете очень легко использовать другие номера портов для уже запущенных локальных служб. Итак, предположим, что у вас есть хосты A, B и C, к которым вы хотите подключиться таким образом, все они имеют службы на порту 80, и вы используете свой собственный веб-сервер на порту 80. Затем вы выполняете

ssh user@hosta -L 5000:localhost:80
ssh user@hostb -L 5001:localhost:80
ssh user@hostc -L 5002:localhost:80

, и вы можете получить к ним доступ прямо сейчас в своем браузере, набрав http://localhost:5000, http://localhost:5001и http:/localhost:5002. И http://localhost:80по-прежнему будет обращаться к вашему собственному локальному серверу.

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

0
28.01.2020, 02:11

Теги

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