автоматический запуск обратного туннеля SSH при запуске системы

автоматический запуск обратного туннеля SSH при запуске системы

У меня есть удаленная машина за брандмауэром, к которой я хочу подключиться через SSH. Насколько я понимаю, это можно сделать с помощью обратного туннеля ssh.

Итак, я использую команду

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa.pub  [email protected]

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

Я попытался использовать cron, добавив команду как в crontab моего пользователя, так и в /etc/cron. Однако проблема в том, что обе команды запрашивают пароль. Я создал the id_rsa.pubфайл и отправил его на удаленный сервер, но он все равно не работает.

Если я вошел в систему (например, через teamviewer), я могу запустить команду, и пароль не запрашивается. Если я запускаю команду как root ( sudo), то запрашивается (пустой) пароль для файла rsa. Я подозреваю, что моя проблема здесь, т. е. когда cron выполняет команду, ssh запрашивает пароль и команда зависает.

Я пробовал использовать как файл rsa моего пользователя, так и файл rsa root, но ни с одним из них мне не удалось подключиться.

решение1

Просто добавьте «sleep 60;» перед командой ssh:

@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

После перезагрузки ваша сеть по-прежнему не работает.

решение2

После объединения нескольких источников я создал службу для автоматического запуска обратного канала ssh. Файлы конфигурации и необходимые шаги находятся в этом репозитории

решение3

Лучшим решением может бытьавтосш:

«autossh — это программа для запуска копии ssh и ее мониторинга, перезапуская ее по мере необходимости в случае ее отказа или прекращения передачи трафика».

Как говорится в цитате, это имеет дополнительное преимущество, поскольку обеспечивает возможность «постоянной доступности».

решение4

Исправление проблемы SSH

Вы не можете аутентифицировать удаленную машину с помощьюпубличныйключ, вам нужно использоватьчастныйkey для этого. Открытый ключ должен быть на удаленном сервере. Если вы не уверены, то просто скопируйте открытый ключ на удаленный сервер, например так:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver

и затем выполните команду с закрытым ключом:

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Выполнение этой команды при загрузке

Как вы уже сделали с crontab, запустите crontab -eредактирование cron. Добавьте следующую строку, чтобы выполнить эту команду, как только ваш компьютер загрузится.

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Связанный контент