簡體   English   中英

apache服務器上的ssh連接python mod_wsgi flask

[英]ssh connection on apache server python mod_wsgi flask

我在帶有mod_wsgi的Apache服務器中啟動了帶有Flask的python rest API。 它打開了與其他計算機的ssh連接,以發送一些信息並在其中使用它,並且在我更改服務器(使它在Werkzeug服務器上運行)之前,一切正常。 但是現在看來,它可以工作,但是當我對服務器執行get請求時,它凍結並且不執行任何操作,沒有日志,沒有錯誤,沒有任何反應。

初始化 .py

from flask import Flask, jsonify,make_response,abort,g,request,url_for
from flask_httpauth import HTTPBasicAuth
from flask_sqlalchemy import SQLAlchemy
from flask_bson import accept_bson, bsonify
import base64
from controler import Controler
...
...
@app.route('/api/register', methods=['POST'])
def new_user():

    try:
        username = request.json.get('username')
        password = request.json.get('password')
    except:
        abort(400)


    user = users.new_user(username,password)
    return (jsonify({'username': user.username,'uri':url_for('get_user', username=user.username, _external=True)}), 201)
...
...

控件

class Controler():   
ips = 2 #number of machines in the distributed service
    def _init_(self):

    self.con = []#ssh conn
    self.data = []#conn metadata
    self.__initConn()

def __initConn(self):

    i = 0
    config = SSHConfig()
    config.parse(open('./config'))

    for j in range(self.ips):
        i += 1
        o = config.lookup('server' + str(i)) 
        params = dict (
            ssh_address=o['ip'],
            ssh_port=22,
            ssh_host_key=None,
            ssh_username=o['user'],
            ssh_password=o['password'],
            ssh_private_key=None,
            remote_bind_address=('127.0.0.1', 5555),
        )
        a = open_tunnel(**params)
        a.start()#starting tunnel. *************************

當它應該啟動ssh隧道時,它在最后一行停止。

一些信息:Apache版本2.4 Python版本2.7

在Ubuntu VM和Ubuntu服務器上的子節點上啟動

在Apache下,您的代碼不會以您的身份運行,而是以Apache用戶的身份運行。 如果您依靠用戶主帳戶中的SSH配置/密鑰,那么它將無法正常工作。

./config相對路徑也不會起作用,因為使用mod_wsgi運行應用程序的進程的當前工作目錄不會在您的代碼中。 嘗試計算配置文件的位置作為絕對路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM