我正在尝试创建ssh反向隧道。当我在终端上运行以下命令时,它的效果会更好:
autossh -M 10876 -N -f -o PubkeyAuthentication=yes -o PasswordAuthentication=no -i /root/.ssh/id_rsa -R 6666:localhost:22 root@**.**.**.** -p 2233
但是当我在python中使用os.system()
或使用subprocess
运行它时,它就不起作用了。当我检查进程列表时,进程被创建并运行,与上一个方法没有区别(直接在终端运行)
python代码:
^{pr2}$知道有什么问题吗?在
{{t}你不想使用cd2}命令。。。它应该是一根线。在
因为您将参数作为一个序列传递给
Popen
,所以第一个arg(autossh
)被用作命令,其余的参数实际上被传递给shell,而不是autossh
。在所以。。。您可以删除
shell=True
,也可以通过删除shlex.split()
作为字符串传递参数。在https://docs.python.org/2/library/subprocess.html#subprocess.Popen
它在Windows10中很适合我(cygwin中的autosh,Python3.6)
port = 6379; command = f'autossh -M 1{port} -N -f -C -L {port}:localhost:{port} root@acone2'; proc = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, shell=True)
相关问题 更多 >
编程相关推荐