我这方面的经验为零。
我正在尝试在本地计算机中创建一个 API,并从 SSH 调用该 API
服务器.py:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/", methods=["GET"])
def get_info():
return jsonify({"data": "hi"})
# from openai import OpenAI
if __name__ == "__main__":
app.run(debug=True)
这是 SSH 机器上的 client.py。
编辑:我的意思是。
server.py
是在本地主机上创建的。和 client.py
(另一个项目)是在 SSH 上创建的(据我所知是远程机器)。虽然两者都是使用我的机器创建的。
import requests
import json
import socket
# request = b"GET / HTTP/1.1\nHost: www.cnn.com\n\n"
s = socket.socket()
s.connect(("127.0.0.1",5000))
s.sendall(b"GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n")
print(s.recv(1024))
url = 'http://localhost:5000'
response = requests.get(url)
print(response)
# print(str(response))
# print('')
# print(json.dumps(response.json(), indent=4))
抱歉,我对套接字一无所知,我只是按照互联网上的一些代码进行操作,但它不起作用。
谢谢你。
编辑:在 SSH 上运行
client.py
时。我收到错误结果
b'HTTP/1.1 404 Not Found\r\nTransfer-Encoding: chunked\r\nDate: Mon, 16 Sep 2024 08:44:33 GMT\r\nServer: Warp/3.3.17\r\n\r\n0\r\n\r\n'
<Response [404]>
我也关注了这个。但不起作用:
如果本地 API 绑定到
localhost
并且您不想公开公开它,则 SSH 隧道是更安全的选择。
localhost
在本地计算机上正常启动 API,并将其绑定到
localhost
。例如:
flask run --host=127.0.0.1 --port=5000
ssh -L 4032:localhost:5000 [email protected]
curl http://localhost:5000
测试(站在远程机器上):
import requests
requests.get("http://127.0.0.1:4032")
-> <Response [404]>
import requests
requests.get("http://localhost:4032")
-> <Response [404]>
import requests
requests.get("http://localhost:5000")
-> <Response [404]>
好吧,我已经想通了。原来我站在错误的一边打电话给隧道。
我必须站在本地机器上运行
ssh -R 8080:localhost:5000 user@remote_server