Iptables (перенаправление портов с сервера vps openvpn на клиент vpn)

ssh remotehost 'command1 ; command ; command3'

Или, если вы хотите запустить команду 2, только если команда 1 выполнена успешно, и команду 3, если команда 2 выполнена успешно:

ssh remotehost 'command1 && command && command3'

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

ssh remotehost 'ps hu -Csshd | awk "{print \$2}"'
ssh remotehost 'ps hu -Csshd | awk "{print $2}"'

Первая печатает только PID процессов sshd. Второй выводит полный список процессов sshd ps hu - неэкранированный $ 2 - это пустая строка, поэтому команда awk становится просто {print}

. Третий вариант - запустить ps на удаленный хост и awk локально:

ssh remotehost ps hu -Csshd | awk '{print $2}'

В двух приведенных выше командах вся строка в кавычках выполняется на удаленном хосте, потому что это аргумент, который вы дали команде ssh. В этом примере все до | выполняется удаленно (опять же, потому что 'ps', 'hu' и '-Csshd' являются аргументами для команды ssh, а оставшаяся часть строки выполняется локально.

Для задач, которые сложнее, чем вы хотите запустить с однострочником (или когда цитирование оболочки становится адским), вы можете написать сценарий оболочки и скопировать его на удаленный хост, а затем выполнить его с помощью ssh:

vi myscript.sh
chmod +x myscript.sh
scp myscript.sh remotehost:/usr/local/bin/
ssh remotehost myscript.sh

Вы можете скопировать сценарий куда угодно, но а) вам нужен доступ для записи в каталог, б) он не может быть в файловой системе, смонтированной с помощью noexec (не часто, но иногда / tmp монтируется с noexec), если вы не запустите его с помощью «/ путь / к / интерпретатор / путь / к / script "- например, / bin / bash / tmp / myscript.sh

0
07.04.2018, 18:53
2 ответа

3389 явно не находится в пределах 10000 :20000, поэтому необходимо дополнительное утверждение:

iptables -t filter -A FORWARD -p udp -d 10.8.0.19 --dport 3389 -j ACCEPT
0
28.01.2020, 04:26

сделать СВЯЗАННЫЙ трафик ПРИНЯТЫМ в цепочке FORWARD.

iptables -A FORWARD -m state --state RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

Второе правило в этом случае не обязательно, но может помочь другим трафикам.

0
28.01.2020, 04:26

Теги

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