Создание конфигурации ssh для обратного туннеля + локальная пересылка

Я нашел надежное решение: Просто поместите скрипт в /usr/lib/systemd/system-shutdown/.

См. также: https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html

Непосредственно перед выполнением действительных действий halt/poweroff/reboot/kexec systemd-shutdown запустит все исполняемые файлы в каталоге /usr/lib/systemd/system-shutdown/ и передаст им один аргумент: либо "halt", либо "poweroff", либо "reboot", либо "kexec", в зависимости от выбранного действия. Все исполняемые файлы в этом каталоге выполняются параллельно, и выполнение действия не будет продолжено до завершения всех исполняемых файлов.

1
01.03.2019, 05:07
2 ответа

Вероятно, самый простой способ — избежать локальной переадресации, которая кажется ненужной в вашем случае, и использовать директиву ProxyJump, которая позволяет указать один или несколько прокси-серверов перехода (, то есть один или несколько промежуточных хостов (. s ), к которому вы подключаетесь и с которого вы достигаете целевого хоста ).

Вам потребуется два подключения:

  1. Удаленная переадресация, которую вы уже установили, с вашей Linux-системы на vps:

    ssh -R 15000:localhost:22 vps-user@vps
    

    Я предполагаю, что вы можете подключиться к vps через порт 22(, как это подразумевается в вашем вопросе ).
    Это позволит vps перенаправлять соединения, которые он получает через порт 15000, на порт 22вашего Linux-бокса.

  2. Подключение локального MacBook к vps:

    ssh -J vps-user@vps -p 15000 linuxbox-user@localhost
    

    -J— это ярлык для указания директивы ProxyJump. (см. страницу руководстваssh(1)).
    Опять же подразумевается, что вы можете подключиться к vps по порту 22.
    Эта команда подключит ваш локальный MacBook к порту 22на vps, а оттуда к порту 15000на том же vps (, где слушает linux box ), предоставляя вам вход в ваш linux box без дополнительных подключений.

Соответствующие .ssh/configфайлы будут:

  • На вашей Linux-системе:

    Host vps
        RemoteForward 15000 localhost:22
        User          vps-user
    

    Что позволяет вам просто ввести:

    ssh vps
    
  • На локальном MacBook:

    Host linuxbox
        ProxyJump vps-user@vps
        Hostname  localhost
        Port      15000
        User      linuxbox-user
    

    Что оставляет вас с необходимостью просто выпустить:

    ssh linuxbox
    

Если вы используете аутентификацию с открытым ключом (, как вы предположительно делаете, по крайней мере, чтобы разрешить автоматическую настройку удаленной переадресации ), вы также можете добавить директиву IdentityFileв оба ваших файла .ssh/config. чтобы убрать необходимость вводить пароли.


Если выполняются некоторые условия, вы также можете напрямую подключить локальный MacBook к порту 15000на vps,избегая необходимости локальной переадресации или перехода через прокси. А именно, условия:

  1. Порт 15000на vps не фильтруется брандмауэром.

  2. Вы устанавливаете GatewayPorts yesв конфигурации sshdна vps (обычно в/etc/ssh/sshd_config).
    Этот параметр по умолчанию имеет значение noи определяет, может ли удаленная переадресация привязать порт прослушивания к другим адресам, кроме петлевого (, следовательно, IP-адрес, отличный от 127.0.0.1или ::1). Дополнительную информацию см. на странице руководства sshd_config(5).

В этом сценарии вам понадобятся только эти две команды:

  1. Обратная переадресация с вашего linux-бокса на vps (обратите внимание на *:, предшествующий удаленному порту, что означает «прослушивать любой адрес»):

    ssh -R *:15000:localhost:22 vps-user@vps
    
  2. Простое подключение MacBook к vps:

    ssh -p 15000 -l linuxbox-user vps
    

Которые преобразуются в следующие .ssh/configфайлы:

  • В вашем Linux-боксе (снова обратите внимание на *:, предшествующий удаленному порту ):

    .
    Host vps
        RemoteForward *:15000 localhost:22
        User          vps-user
    
  • На локальном MacBook:

    Host linuxbox
        Hostname  vps
        Port      15000
        User      linuxbox-user
    

Обратите внимание, однако, что таким образом вы сделаете свой Linux-бокс доступным для Интернета , что, скорее всего, вам не нужно.

4
27.01.2020, 23:31

Я предполагаю, что Linux-бокс автоматически выполняет обратный туннель к VPS, потому что если бы вы могли сделать это с macbook, в этом не было бы необходимости.

Итак, все, что вам нужно сделать на macbook, это:

  • написать bash-скрипт:

    #!/bin/bash
    ssh -f -N -L 12345:localhost:1500 vps-user@vps
    sleep 5
    ssh -f -N linuxbox-user@localhost -p 12345
    
  • Убедитесь, что он исполняемыйchmod +x /path/to/script

  • Затем создайте псевдоним в конце/home/username/.bashrc

    alias sshlinuxbox="/path/to/script"
    
  • Затем все, что вам нужно сделать, это ввести sshlinuxboxпосле открытия нового терминала, чтобы обновить.bashrc.

0
27.01.2020, 23:31

Теги

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