Убить фоновый SSH при выходе оболочки

Я пытаюсь создать SSH из моего сценария профиля bash, который работает в фоновом режиме для совместного использования (через его управляющий сокет). Проблема, с которой я столкнулся, – это надежный способ гарантировать, что SSH не будет работать, как только TTY будет закрыт (или более непосредственно, как только родительская оболочка bash выйдет).

Я знаю, что оболочка может запускать команды (для завершения SSH), когда она выходит изящно, но я пытаюсь обрабатывать все возможные сценарии, когда оболочка не получает возможности закрыть все.

Умеет ли я это сделать?

Лучшая идея у меня была

ssh -o PermitLocalCommand=yes -o LocalCommand='cat >/dev/null; kill $PPID' $HOST & 

Но это не сработает, потому что мне нужна команда только для фона после ее успешного запуска. Кроме того, я не могу использовать -fN вместо оболочки & потому, что SSH -f только фоны после завершения LocalCommand .

Также я пытаюсь избежать выполнения любой команды на удаленном хосте. В противном случае я мог бы, вероятно, сделать что-то вроде ssh -fN $HOST 'cat >/dev/null'

3 Solutions collect form web for “Убить фоновый SSH при выходе оболочки”

Если ваша оболочка является оболочкой входа, вы можете остановить основное соединение SSH из файла ~ / .bash_logout:

 ssh -O exit hostname 

Если оболочка не является оболочкой входа, вы можете установить ловушку в файле ~ / .bashrc сразу после нереста SSH:

 ssh -fN hostname trap 'ssh -O exit hostname' EXIT 

Я ненавижу это, когда я отвечаю на свой вопрос.

Решение, которое я придумал, заключается в использовании ControlPersist=3600 при запуске процесса master ssh. Таким образом, если оболочка не выходит изящно и убивает ssh, тогда она отключится после часа бездействия. Хотя я все еще использую ловушку при выходе, чтобы закрыть ssh вниз чисто.

 ssh -o ControlMaster=yes -o ControlPersist=3600 -o ControlPath=/tmp/ssh-%u-%h-%p-%r -Nf $HOST trap "ssh -o ControlPath=/tmp/ssh-%u-%h-%p-%r $HOST -O exit" exit 

Сохранять сеансы SSH после отключения

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

  • Автоматический вход на несколько корневых терминалов SSH
  • Копирование файлов с моего (оконного) компьютера в удаленную систему по ssh
  • Зашифрованный домашний каталог и SSH (только для проверки подлинности) прерывает пересылку X11
  • SFTP Chroot и SSH
  • Запустить команду через SSH, отключить, отправить в нее позже?
  • Может ли ssh (агент) работать с двумя отдельными идентификаторами?
  • Переслать X11 через два туннеля SSH
  • Как вы проверяете, находится ли еще INCHING ssh-туннель и кому он принадлежит?
  • По-прежнему запрашивается пароль после создания ключей авторизации
  • Устанавливать пароль при первом входе в систему пользователя pubkey-auth
  • Какая правильная форма ключевого слова SSH HostnameSuffixes?
  • Linux и Unix - лучшая ОС в мире.