Звучит так, будто вы действительно просите обратную старую команду nohup ; то есть какой-то способ гарантировать, что удаленная команда реагирует на сигнал HUP (зависания), который генерируется драйвером TTY (PTY или psuedo-tty), когда основное соединение с ним закрыто.
Лично я подозреваю, что Paramiko будет гораздо лучше, чем пытаться управлять этим с помощью модуля subprocess . Вы можете сделать так, чтобы Paramiko открывал соединение, распределял pty и выполнял ваши команды без всяких усилий; и код для использования существующих known_hosts и идентификационных файлов (личных ключей) относительно прост.
Этот рецепт Копирование файлов через SSH с использованием paramiko в ActiveState показывает основы загрузки ssh known_hosts, использования файлов идентификации и взаимодействия с любым ssh агентом , который вы, возможно, используете. Оттуда то, что вы просите, должно быть просто вопросом:
Также можно использовать реализацию TwistedConch протоколов SSH. Тем не менее, обернуть голову вокруг Twisted Framework программирования может быть довольно сложным.
Вот пример простого ssh-сервера в Twisted с поддержкой pty: Twisted Conch за 60 секунд: запросы PTY
Вот SO поток всего за неделю до публикации вашего Лучший способ запуска удаленных команд через ssh в Twisted? , но это вообще не затрагивало проблемы, связанные с pty. Изучение документов для twisted.conch.ssh.session показывает, что у него есть поддержка pty; но перечисляет это как «Недокументированное».
Конечно, вы могли бы даже пойти с Pexpect , запустить оболочку для локального ssh клиента и отправить через него удаленную команду. Это будет наиболее близко эмулировать способ запуска команды из вашей собственной оболочки.