ssh к частному IP

Даже при том, что это не упоминается в procmail руководстве, я верю (я не проверил), что, помещая обратную косую черту, прежде чем пространство удаляет свое особое значение (как в других частях procmail).

:0
* From: .*Stack\ Exchange
Stack\ Exchange/

Если это не работает, используйте переменную.

STACKEXCHANGE_MAILBOX=Stack Exchange
:0
* From: .*Stack\ Exchange
$STACKEXCHANGE_MAILBOX
18
21.08.2013, 01:11
3 ответа

То, что Вы ищете, называют обратным туннелем. 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 туннель работает следующим образом.

  1. вход в систему remotey

    [user@lappy ~]$ ssh remotey
    
  2. проверьте порт обратного туннеля

    [user@remotey ~]$ ssh -p 12345 localhost
    
  3. должен теперь вернуться на 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 ~]$ 
    

Порты в интерфейсах кроме localhost (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.

Включение GatewayPorts

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.

Тестирование соединения (часть deux)

Теперь с нашей измененной установкой, когда мы тестируем его на этот раз. Главная разница - то, что мы больше не должны соединяться с localhost!

  1. вход в систему remotey

    [user@lappy ~]$ ssh remotey
    
  2. проверьте обратное соединение

    [user@remotey ~]$ ssh -p 12345 remotey
    
  3. должен теперь вернуться на lappy

    root@remotey's password: 
    Last login: Wed Aug 21 01:49:10 2013 from remotey
    [user@lappy ~]$ 
    

Ссылки

14
27.01.2020, 19:46
  • 1
    является там способом сделать туннель от 0.0.0.0:12346 до 127.0.0.1:12345 на той же машине? –  Kokizzu 20.08.2013, 18:47
  • 2
    @Kokizzu - Я пытался настроить это, и я становлюсь перенесенным аксель на том, что Вы просите. Я нашел это, которое походит на то, что Вы хотите, anattatechnologies.com/q/2012/08/chaining-ssh-tunnels. Я попытаюсь разработать его позже сегодня вечером, не стесняйтесь играть с ним и сообщать мне, делаете ли Вы какие-либо успехи с ним. –  slm♦ 20.08.2013, 21:16
  • 3
    это не то, что я имел в виду, я хочу, чтобы это связало с w.x.y.z:vvv2 вместо 127.0.0.1 (на компьютере B), таким образом, другие люди могут использовать его также.. –  Kokizzu 21.08.2013, 04:13
  • 4
    @Kokizzu - видит обновления. –  slm♦ 21.08.2013, 09:38

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

ssh user@computerB -R vvv:localhost:22
2
27.01.2020, 19:46
  • 1
    спасибо, но там способ открыть порт на IP eth0, который передал сервису, который слушал localhost? –  Kokizzu 20.08.2013, 14:41

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
1
27.01.2020, 19:46

Теги

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