Рейтинг:2

Как можно запустить обратное SSH-соединение и поддерживать его при загрузке Ubuntu с помощью systemd?

флаг cn

У моей мамы есть крошечный ноутбук, которому при загрузке необходимо обратное SSH-подключение к серверу (так что я могу помочь, когда это необходимо).

Я изо всех сил пытаюсь сохранить соединение, когда оно запускается системад.

В /reverse_SSH.sh У меня есть что-то вроде этого:

#!/бин/баш
пока верно; делать
    ssh -R 19123:localhost:22 [email protected]
    спать 1000
сделано

В /etc/systemd/система/reverse_SSH.сервис У меня есть что-то вроде этого:

[Ед. изм]
Описание=обратный-SSH

[Оказание услуг]
Тип=вилка
ExecStart=/reverse_SSH.sh

[Установить]
WantedBy=многопользовательская.цель

Когда я бегу sudo systemctl запустить reverse_SSH, соединение SSH действительно происходит, и MOTD сервера можно увидеть в выводе статус sudo systemctl reverse_SSH, но соединение SSH, похоже, не сохраняется, и я не могу получить доступ к машине на сервере с помощью такой команды, как ssh sonnyboy@localhost -p 19123.

Что за глупости я делаю не так? Спасибо!

Рейтинг:1
флаг cn

Я бы предпочел использовать автосш пакет для такой услуги. Итак, сначала установите его:

sudo apt update && sudo apt установить autossh

Затем создайте запись конфигурации для вашего соединения, создав новый файл в каталоге /etc/ssh/ssh_config.d/. Давайте назовем это reverse.ssh.www.example.org.conf. Вот пример:

судо нано /etc/ssh/ssh_config.d/reverse.ssh.www.example.org.conf
# Этот файл загружается /etc/ssh/ssh_config
Хост reverse.ssh.www.example.org
    Имя хоста www.example.org
    IdentityFile /root/.ssh/your_passles_id_rsa
    Мама пользователя
    Порт 22
    Удаленный Форвард 19123 127.0.0.1:22
    Порты шлюза да
    Сжатие да
  • Обратите внимание, что ключ SSH принадлежит пользователю root, который будет управлять подключением нашей службой.
  • Последние два параметра не являются обязательными.

Наконец, создайте службу:

sudo nano /etc/systemd/system/reverse-autossh-www-example-org.service
[Ед. изм]
Description=Оставляет резидентный туннель к www.example.org открытым
#После=network.target
After=network-online.target

[Оказание услуг]
Пользователь=корень
ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" reverse.ssh.www.example.org
ExecStop=/usr/bin/killall -s KILL autossh
#ExecStop=/bin/kill $MAINPID
Перезапустить = всегда
Рестартсек=3
# Окружающая среда = AUTOSSH_GATETIME = 0

[Установить]
WantedBy=многопользовательская.цель

Включите и запустите службу:

sudo systemctl демон-перезагрузка
sudo systemctl включить reverse-autossh-www-example-org.service
sudo systemctl start reverse-autossh-www-example-org.service

Я использовал эту конфигурацию в течение последних двух лет для решения аналогичной задачи - она ​​работает как шарм. Тем не менее, вот несколько ссылок:

BlandCorporation avatar
флаг cn
Большое спасибо за ваше предложение. Однако когда я пытаюсь запустить его, кажется, что он работает только после того, как пользователь вошел в систему. Знаете ли вы, как этот подход может работать только при загрузке и не требует взаимодействия с пользователем? Я представляю, как заставляю машину перезагружаться удаленно, а затем мне нужно, чтобы она восстановила обратное SSH-соединение со мной.
pa4080 avatar
флаг cn
Привет, @BlandCorporation, когда служба включена, она должна запускаться автоматически во время процесса загрузки после выполнения условий, описанных в разделе устройства. В вашем конкретном случае `User=root`? И есть ли какая-то зашифрованная файловая система?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.