Близко, но не точно.
ssh root@remoteserver '/root/backup.sh /var/log/root-backup.log 2>&1 &'
Необходимо закрыть все дескрипторы файлов, которые подключены к сокету ssh, потому что ssh сессия не закроется, пока некоторый удаленный процесс имеет открытый сокет. Если Вы не интересуетесь выводом сценария (по-видимому, потому что сам сценарий заботится о записи в файл журнала), перенаправьте его к /dev/null
(но обратите внимание, что это скроет ошибки, такие как неспособность запустить сценарий).
Используя nohup
не имеет никакого полезного действия здесь. nohup
устраивает программу, которую это запускает для не получения Сигнала HUP, если терминал управления программы исчезает, но здесь во-первых нет никакого терминала, таким образом, ничто не собирается отправить SIGHUP в процесс внезапно. Кроме того, nohup
стандартный вывод перенаправлений и стандартная погрешность (но не стандартный вход) в файл, но только если они подключены к терминалу, который, снова, они не.
aaron@localpc$ ssh root@remoteserver
root@remoteserver# nohup /root/backup.sh
Использовать nohup
отсоединять сценарий от его терминала управления так, чтобы это не получало SIGHUP, когда терминал исчезает. nohup
также перенаправляет стандартный вывод сценария и стандартную погрешность в названный файл nohup.out
если они подключены к терминалу; необходимо заботиться о стандарте, вводит себя.
Если Вы хотите поддерживать команду в рабочем состоянии в удаленном терминале, но не иметь присоединенный к сессии SSH, выполнить его в оконечном мультиплексоре, таком как Screen или Tmux.
ssh root@remoteserver 'screen -S backup -d -m /root/backup.sh'
Можно позже снова соединиться с терминалом, куда сценарий работает путем вызова screen -S backup -rd
как базируются на той машине.
Для немного лучшей безопасности не открывайте прямые удаленные корневые логины слишком широко. Создайте пару ключей специального назначения и дайте ей принудительную команду в /root/.ssh/authorized_keys
. Содержание файла с открытым ключом AAAA…== wibble@example.com
; добавьте разделенный запятыми список опций включая command="…"
который указывает, что ключ может только использоваться для выполнения этой определенной команды. Обязательно сохраните опции и ключ всеми на одной строке.
command="/root/backup.sh /dev/null 2>/dev/null &",no-port-forwarding,no-agent-forwarding,no-x11-forwarding,no-pty,no-user-rc AAAA…== wibble@example.com
Remmina имеет это настраивающееся в 'Предпочтениях'-> вкладка 'Keyboard'-> Field 'Клавиатура захвата'. На моей установке Ubuntu это - правильная клавиша Ctrl.
Работы для меня и, кажется, ведут себя как клавиша-переключатель. Нажатие его снова делает модифицирующие клавиши, работающие над локальной машиной снова.
В зависимости от клиентской среды использование привязки клавиш для переключения «захвата клавиатуры» может не работать по ряду причин.
В качестве альтернативы вы можете использовать кнопку «захватить все события клавиатуры» на панели инструментов в полноэкранном режиме.