SSH 进入机器,然后启动交互式命令行程序

SSH 进入机器,然后启动交互式命令行程序

我想实际通过 ssh 进入一台机器(而不是远程执行类似的命令ssh -i key.pem user@host 'bash -s' < script.sh)并且然后完成后,运行命令在远程机器上启动交互式命令行程序。有什么想法吗?请注意,所有这些都是在脚本中完成的,最终结果应该是运行交互式命令行程序之内远程主机上的 shell。

到目前为止,我已经在 Ubuntu 14.04 上尝试过 Python 2.7

import os
os.system("xterm -e ssh -tt -i key.pem -o StrictHostKeyChecking=no ubuntu@ip_address yRouter/src/yrouter --interactive=1 user")

xterm会话随后立即关闭。“yrouter”是远程计算机上的可执行文件,--interactive=1 user是其参数。

需要澄清的是:运行上述 Python 代码后的结果应该是xterm打开一个(或任何终端窗口),已经 ssh 到远程主机并且正在运行交互式命令行程序yrouter

答案1

如果在参数中传递命令则以ssh非交互方式运行;

$ ssh -t user@localhost echo foo
user@localhost's password: 
foo
Connection to localhost closed.

一种解决方案是在传递给的命令中用交互式 shell 替换非交互式 shell ssh

$ ssh -t user@localhost 'echo foo; exec zsh'
user@localhost's password: 
foo
% 

在你的情况下,用交互式 Bash 实例替换非交互式 shell:

import os
os.system("xterm -e ssh -tt -i key.pem -o StrictHostKeyChecking=no ubuntu@ip_address 'yRouter/src/yrouter --interactive=1 user; exec bash'")

相关内容