tar
распакует свой архив в том порядке, в котором он был создан.
( echo foo; echo foo/a; echo b; echo foo/c ) | tar --no-recursion --files-from=- -cvf /tmp/tar.tar
и
tar tvf /tmp/tar.tar
drwxr-xr-x roaima/roaima 0 2016-06-27 20:20 foo/
-rw-r--r-- roaima/roaima 0 2016-06-27 20:20 foo/a
-rw-r--r-- roaima/roaima 0 2016-06-27 20:13 b
-rw-r--r-- roaima/roaima 0 2016-06-27 20:20 foo/c
Что-то вроде этого работает для меня, чтобы заставить socat слушать только localhost.
socat TCP-LISTEN:22,fork,bind=127.0.0.1 TCP:192.168.0.15:5900
Так что вы можете попробовать это.
socat TCP-LISTEN:22,fork,bind=8.8.8.8 TCP:192.168.0.15:5900
Если ваша основная цель - безопасность и вы управляете клиентским компьютером, тогда подключение к вашему серверу socat через туннель SSL - более безопасный вариант, заставляющий сервер проверять сертификат клиента перед тем, как принимать соединения.
Я недавно прошел через это, пытаясь обеспечить взаимодействие клиент / сервер.
В этом руководстве четко объясняется установка
http://www.dest-unreach.org/socat/doc/socat-openssltunnel.html
Одно отклонение от инструкций, которые я обнаружил, заключается в том, что ваша клиентская библиотека SSL должна отклонять ключ сервера по умолчанию из-за патча для блокировки
Добавление следующего к серверу PEM заставляет все работать
openssl dhparam 2048 >> "$FILENAME".pem
Этот механизм обмена на основе ключа намного более авторитетен, когда дело доходит до проверки хостов через аутентификацию на основе IP.