Даже при том, что это не упоминается в procmail руководстве, я верю (я не проверил), что, помещая обратную косую черту, прежде чем пространство удаляет свое особое значение (как в других частях procmail).
:0
* From: .*Stack\ Exchange
Stack\ Exchange/
Если это не работает, используйте переменную.
STACKEXCHANGE_MAILBOX=Stack Exchange
:0
* From: .*Stack\ Exchange
$STACKEXCHANGE_MAILBOX
То, что Вы ищете, называют обратным туннелем. ssh
обеспечивает его через -R
переключатель:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side. This
works by allocating a socket to listen to port on the remote side,
and whenever a connection is made to this port, the connection is
forwarded over the secure channel, and a connection is made to host
port hostport from the local machine.
Как OP, обнаруженный с их ответом, синтаксис следующие:
$ ssh -f -N -R vvv:localhost:22 w.x.y.z
У меня есть 2 компьютера в сети, lappy
и remotey
. Таким образом, я работаю на следующей команде lappy
:
$ ssh -f -N -R 12345:localhost:22 remotey
Я могу подтвердить, что это работает:
$ ps -eaf|grep "[l]ocalhost:22"
saml 27685 1 0 11:10 ? 00:00:00 ssh -f -N -R 12345:localhost:22 remotey
Теперь, если я ssh
отдельно к удаленной системе, remotey
и выполненный эта команда I видит, что теперь принимает соединения на порте 12345 в локальном интерфейсе удаленной системы:
$ netstat -an|grep :12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
tcp 0 0 ::1:12345 :::* LISTEN
Вы видите, что реверс ssh туннель работает следующим образом.
вход в систему remotey
[user@lappy ~]$ ssh remotey
проверьте порт обратного туннеля
[user@remotey ~]$ ssh -p 12345 localhost
должен теперь вернуться на lappy
user@localhost's password:
Last login: Thu Aug 1 17:53:54 2013
/usr/bin/xauth: creating new authority file /home/user/.Xauthority
[user@lappy ~]$
lo
)?Вас можно было бы оставить, царапая Вашу голову, если Вы пробуете команду как это, и это, кажется, не работает, или она всегда связывает с портом на localhost (lo
) интерфейс.
Например:
lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey
Примечание: Эта команда говорит для открытия порта 12345@remotey и туннеля любые соединения с портом 22@lappy.
Затем на remotey:
remotey$ netstat -an|grep 12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
То, что продолжается, sshd
конфигурации не позволяют Вам делать это. На самом деле без этой функции включил (GatewayPorts
) Вы не сможете связать любого ssh
туннельные порты к чему-либо кроме localhost.
remotey$ grep GatewayPorts /etc/ssh/sshd_config
#GatewayPorts no
Для включения его отредактируйте этот файл /etc/ssh/sshd_config
:
GatewayPorts clientspecified
И перезапуск sshd
:
remotey$ sudo service sshd restart
Теперь попробуйте его снова, и мы должны видеть эффект, который мы после:
lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey
И проверьте его дважды на этот раз на remotey:
remotey$ netstat -anp | grep 12345
tcp 0 0 192.168.1.3:12345 0.0.0.0:* LISTEN 9333/sshd
Примечание: В вышеупомянутом мы видим что sshd
процесс теперь слушает в интерфейсе, который имеет IP-адрес 192.168.1.3 для соединений на порте 12345.
Теперь с нашей измененной установкой, когда мы тестируем его на этот раз. Главная разница - то, что мы больше не должны соединяться с localhost!
вход в систему remotey
[user@lappy ~]$ ssh remotey
проверьте обратное соединение
[user@remotey ~]$ ssh -p 12345 remotey
должен теперь вернуться на lappy
root@remotey's password:
Last login: Wed Aug 21 01:49:10 2013 from remotey
[user@lappy ~]$
Так как компьютер B не может получить доступ к компьютеру A, необходимо будет открыть удаленный туннель от компьютера первое.
ssh user@computerB -R vvv:localhost:22
nevermind, я нашел ответ:
ssh -f -N -R vvv:localhost:22 w.x.y.z
от компьютера A
Править: TL; DR, правильное решение:
ssh -f -N -R w.x.y.z:vvv:localhost:22 w.x.y.z