Автоматический SSH на запуске на самом деле запускается, но он не отображает команды?

Таким образом, у меня есть система Ubuntu 16.04, это, как предполагается, запускает скрипт SSH, который я записал, каждый раз начальные загрузки системы. Это - мой первый раз, пытаясь заставить это работать, таким образом, это никогда не имеет прежде.

Сценарий очень прост:

while true; do sleep 60; ssh root@ip -i ~/.ssh/key -R xxxx:localhost:22; done

Это в названном файле autossh.sh.

Чтобы заставить сценарий работать автоматически, я попытался включать его в/etc/rc.local (прежде чем выйдут 0), я попытался добавить его к списку приложений запуска от GUI Ubuntu.

В течение обоих раз я перезагружаю компьютер, я вижу, что сценарий на самом деле работает, но он не отображается, удаленный порт к localhost 22 как команда, как предполагается, делает. Если я выполняю команду вручную, она работает, но она просто не работает после начальной загрузки.

Действительно ли там что-то очевидно, что я отсутствую здесь, это препятствует тому, чтобы этот сценарий работал, как он должен?

1
задан 14 September 2017 в 01:43

1 ответ

1. тильда (~) решит к Вашему корневому каталогу, но это не имеет значения, в то время как Вы не зарегистрированы. Это не так важно согласно следующему предложению, но хорошо, чтобы быть подчеркнутым. Связанный ответ . Мое предложение здесь состоит в том, чтобы переписать сценарий таким образом:

#!/bin/bash
while true; do sleep 60; ssh root@ip -i "$HOME/.ssh/key" -N -f -R xxxx:localhost:22; done
  • или лучшее использование /the/full/path/to/ вместо $HOME.

  • -f Запросы ssh для движения в фон непосредственно перед выполнением команды.

  • -N не выполняют удаленную команду. Это полезно для просто портов пересылки.

2. ключи SSH читаемы только для их владельца, таким образом, другие пользователи не могут использовать их, и они не могут использоваться в масштабе всей системы. Таким образом, мое предложение состоит в том, чтобы использовать Крон для этой задачи.

Входят в систему с пользователем, который является владельцем ключа SSH и работает crontab -e (-e редактирование средств) или использует sudo -u <user-name> crontab -e (-u, средства выполняются, как пользователь звонил <user-name>), и добавьте эту строку внизу:

@reboot /full/path/to/the/script/autossh.sh > /tmp/autossh.log 2>&1

Сохраняют и закрывают Crontab. Эта строка должна выполнить сценарий при системном запуске и запишет журнал .

Ссылки:

<час>

Обновление:

0
ответ дан 8 December 2019 в 04:03

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

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