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

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

Таким образом, я использую команду:

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa.pub  username@remote-server.com

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

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

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

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

3
задан 15 April 2016 в 21:47

4 ответа

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

1
ответ дан 1 December 2019 в 15:36

Фиксация проблема SSH

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

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  username@remote-server.com

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

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

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  username@remote-server.com
1
ответ дан 16 April 2016 в 07:47

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

@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  username@remote-server.com
after reboot your network is still down
2
ответ дан 16 April 2016 в 07:47
  • 1
    Можно смонтировать любой раздел с файловой системой, которую понимает ядро Linux (включая FAT, который используется ESP) с mount команда. Ваш ESP /dev/sda1, таким образом, you' d тип sudo mount /dev/sda1 /mnt для монтирования его в /mnt. Вы можете затем обратно он до другого диска, смонтированного в другом месте с помощью tar, zip, cp, или другие команды. В Windows можно ввести mountvol S: /S для монтирования ESP как диска S:. (I' m не положительный, но Вы, возможно, должны были бы использовать окно Administrator Command Prompt для этого.) – Rod Smith 10 September 2017 в 12:07

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

"autossh является программой для запуска копии ssh, и контролировать это, перезапуская его по мере необходимости должно он умирать или останавливать проходящее движение".

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

1
ответ дан 1 December 2019 в 15:36

Другие вопросы по тегам:

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