1

У меня Raspberry Pi с ArchARM, и я хотел бы создать обратный SSH-туннель, как только он подключится к сети через Ethernet.

Я создал исполняемый (+x) сценарий оболочки в /usr/bin и хотел бы, чтобы он запускался всякий раз, когда сетевой менеджер по умолчанию получает IP на интерфейсе eth0.

В качестве альтернативы, как лучше всего это сделать без SSH-туннеля или открытия порта на моем маршрутизаторе?

1 ответ1

2

вы можете сделать обратный SSH с помощью -R arg (я написал статью на французском языке об этом здесь ) и cron или сделать сервис с.

здесь материал переведен

user@mynewRaspberry :~$ ssh -R 61337:localhost:22 z8po@z8po.dyndns.info 

после того, как вы можете войти в нее из другого места, здесь, например, из z8po.dyndns.info

z8po@hive :~$ ssh z8po.dyndns.info -p 61337

Далее давайте используем цикл while в вашем скрипте, чтобы проверить, что ssh всегда перезапускается.

while true do ssh -R 61337:localhost:22 z8po@z8po.dyndns.info done

вы можете поддерживать ваше соединение с помощью keep live на ssh-клиенте или сервере, добавив в /etc /ssh /sshd_config или ~ /.ssh /config следующую строку

 ClientAliveInterval 60

Не забудьте использовать ключ rsa, застрахованный от paswsrod, для автоматического входа в систему без приглашения, или, если вы действительно хотите использовать пароль, измените команду ssh на user:password @ ip, но она менее безопасна.

Первый метод Cron это

сделать проверку скрипта, если все уже запущено, в /home/USER/autolauncher.sh

#!/bin/sh
if ps -ef | grep -v grep | grep yourscript.sh ; then
        exit 0
else
        while true do ssh -R 61337:localhost:22 z8po@z8po.dyndns.info done
        exit 0
fi

и редактировать свой crontab

crontab -e

добавить его после других заданий crons; каждые 5 минут запускайте предыдущий скрипт (который не будет работать, если он уже запущен)

   */5 * * * * /home/USER/autolauncher.sh

Второй способ: сервис при запуске

создайте или скопируйте скрипт в init.d и добавьте в него команды, используя vi:

  sudo nano /etc/init.d/autolauncher.sh

сделать его исполняемым

  sudo chmod +x /etc/init.d/autolauncher.sh

update-rc.d для создания и настройки запуска:

  sudo update-rc.d autolauncher.sh defaults

теперь у вас есть два способа заставить ваш rasperry пытаться соединиться

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .