Запись Стандарта Иерархии Файловой системы в Википедии помогла мне ответить на тот же вопрос, когда у меня был он, плюс он имеет очень объяснительную таблицу.
Выборка от этого page1:
/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route.
1 Полученный 19 июня 2019; постоянная ссылка.
Используя ssh самое легкое решение.
ssh-g-L 8001:localhost:8000-f-N user@remote-server.com
Это вперед локальный порт 8001 на Вашей рабочей станции к localhost обращается на порте remote-server.com 8000.
-g
средства позволяют другим клиентам в моей сети соединяться с портом 8001 на моей рабочей станции. В других отношениях только локальные клиенты на Вашей рабочей станции могут соединиться с переданным портом.
-N
средства все, что я делаю, является портами пересылки, не запускают оболочку.
-f
ветвление средств в фон после успешного соединения SSH и входа в систему.
Порт 8001 останется открытым для многих соединений, пока ssh не умрет или будет уничтожен. Если Вы, оказывается, находитесь в Windows, превосходный клиент SSH, PuTTY может сделать это также. Используйте 8001 в качестве локального порта и localhost:8000 и места назначения и добавьте локальное перенаправление портов в настройках. Можно добавить его после успешного подключения с PuTTY.
OpenBSD netcat доступен по умолчанию на Linux и также на OS X.
OSX:
mkfifo a
mkfifo b
nc 127.0.0.1 8000 < b > a &
nc -l 8001 < a > b &
Linux:
mkfifo backpipe
nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe
Альтернатива, которая работает над ударом OS X, должна использовать двунаправленный канал. Это может работать над другим Unixes:
nc 127.0.0.1 8000 <&1 | nc -l 8001 >&0
ss -tan
или netstat -tan
.
– Justin C
03.09.2015, 03:12
Используя традиционное nc
самое легкое решение:
nc -l -p 8001 -c "nc 127.0.0.1 8000"
Эта версия nc
находится в netcat-traditional
пакет на Ubuntu. (Вы имеете к update-alternatives
или назовите его nc.traditional
.)
Обратите внимание, что в отличие от ssh это не шифруется. Имейте это в виду при использовании его вне одного хоста.
netcat
версия, которая включена в busybox
: nc -v -lk -p 8001 -e /usr/bin/nc 127.0.0.1 8000
. (Описание параметрических усилителей)
– Ivan Kolmychek
16.03.2018, 15:30
С socat
на сервере:
socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000
По умолчанию socat
будет прослушивать TCP-порт 8001 на любом IPv4- или IPv6-адресе (если поддерживается) на аппарате. Вы можете ограничить его IPv4 / 6, заменив tcp-listen
на tcp4-listen
или tcp6-listen
, либо конкретным локальным адресом, добавив , привязка = тот-адрес
.
То же самое для соединительного сокета, к которому вы проксируете, вы можете использовать любой адрес вместо localhost
и заменить tcp
на tcp4
или ] tcp6
, если вы хотите ограничить разрешение адресов IPv4 или IPv6 адресами.
Обратите внимание, что для сервера, прослушивающего порт 8000, соединение будет отображаться как исходящее от прокси (в случае localhost
, это будет localhost
), а не исходное. клиент. Вам нужно будет использовать подходы DNAT (но для этого требуются привилегии суперпользователя), чтобы сервер мог определить, кто является клиентом.
iptables -t nat -A PREROUTING -p tcp --dport <origin-port> -j REDIRECT --to-port <destination-port>
service iptables save
service iptables restart
Цитирование ответа Дэвида Спиллета на ServerFault
rinetd should do the job, and a Windows binary for it can be had from http://www.boutell.com/rinetd/ (for anyone looking for the same thing under Linux, rinetd is in the standard repositories of just about every distro so can be installed with "apt-get install rinetd" or "yum install rinetd" or similar)
Это простой двоичный файл, который принимает файл конфигурации в формате
bindaddress bindport connectaddress connectport
Например:
192.168.1.1 8001 127.0.0.1 8000
или
0.0.0.0 8001 127.0.0.1 8000
если вы хотите привязать входящий порт ко всем интерфейсам.
Это новый способ туннелирования двух портов udp на сервере :https://github.com/9crk/udpeer
udpeer 8001 8002
Для проверки:
nc -u xxxx.com 8001
nc -u xxxx.com 8002
Основываясь на ответе Марка А. , мне пришлось внести небольшую поправку, чтобы заставить его работать на моем Mac (, по крайней мере, на macOS Mojave Version 10.14.4)
mkfifo a
mkfifo b
nc 127.0.0.1 8000 < b > a &
nc -l 8001 < a > b &
printf "" > a
Этот оператор printf кажется решающим. В противном случае команда netcat для подключения к порту 8000 никогда не будет пытаться подключиться, а команда netcat для прослушивания порта 8001 никогда не будет фактически прослушивать порт 8001. Без printf каждый раз, когда я пытался бы подключиться к порту 8001, я бы получал В соединении отказано.
Я предполагаю, что netcat должен каким-то образом блокировать стандартный ввод (, возможно, по какой-то причине он пытается его прочитать )перед выполнением каких-либо операций с сокетами. Таким образом, без записи оператора printf в fifo a команда netcat никогда не начнет прослушивать порт 8001.
Примечание. :Я бы оставил ответ на пост Марка, но у меня пока нет репутации.
user@remote-server.com
? Это является определенно ненужным для перенаправления портов, однако ssh мандаты, имеющие этот аргумент, больше законченный, это пытается соединиться там. И после установки этой противной опции к имени хоста это производит…port 22: Connection refused
(не, я не использовал 22 порта). Если я не пропускаю что-то, команда явно не работает. – Hi-Angel 01.12.2016, 15:43user@remote-server.com
просто пример, и Вы не должны брать его буквально. Необходимо заменить это названием компьютера, который Вы хотите подключить с и Ваше имя пользователя на этом компьютере. Эта информация необходима для установления соединения SSH. Только после того, как соединение SSH является установленными портами, может быть передан посредством этого соединения. – Piotr Dobrogost 02.02.2017, 01:45-N
не означает, что нет никакого соединения SSH. Это просто означаетdo not execute a remote command
(см. страницу справочника).<user>@<host>
аргумент необходим, потому что это действительно открывает соединение SSH для<host>
(который для случая OP был быlocalhost
), и вперед требуемый порт через это туннель SSH. Это - одно решение для проблемы OP, но не самое простое. Для передачи localhost, не используя ssh можно использоватьsocat
илиnetcat
как в StephaneChazelas и ответах не-пользователя – 18.04.2018, 14:35