Starchik commited on
Commit
cc69415
·
verified ·
1 Parent(s): 4a9a884

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -13
app.py CHANGED
@@ -1,24 +1,46 @@
1
  import os
2
- import subprocess
 
 
3
  from flask import Flask
4
- from pyngrok import ngrok
5
 
6
  app = Flask(__name__)
7
 
8
- # Запуск SSH-сервера
9
- os.system("apt update && apt install -y openssh-server")
10
- os.system("mkdir -p /var/run/sshd")
11
- os.system("echo 'root:password' | chpasswd") # Меняем пароль root (измените его!)
12
- os.system("sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config")
13
- os.system("service ssh start")
14
 
15
- # Пробрасываем порт SSH через Ngrok
16
- ssh_tunnel = ngrok.connect(22, "tcp")
17
- ssh_url = ssh_tunnel.public_url.replace("tcp://", "")
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  @app.route('/')
20
  def home():
21
- return f"SSH доступ: {ssh_url}"
 
 
 
 
 
 
 
 
 
 
 
22
 
23
- if __name__ == '__main__':
24
  app.run(host="0.0.0.0", port=7860)
 
1
  import os
2
+ import asyncio
3
+ import asyncssh
4
+ import pyngrok
5
  from flask import Flask
 
6
 
7
  app = Flask(__name__)
8
 
9
+ SSH_PORT = 2222 # Локальный порт для SSH
10
+ SSH_USER = "user"
11
+ SSH_PASSWORD = "password"
 
 
 
12
 
13
+ async def start_ssh_server():
14
+ """Запускаем SSH-сервер на Python (без root-прав)"""
15
+ async def handle_client(process):
16
+ process.stdout.write("Welcome to Python SSH Server!\n")
17
+ while not process.stdin.at_eof():
18
+ line = await process.stdin.readexactly(1)
19
+ process.stdout.write(line)
20
+
21
+ await asyncssh.listen(
22
+ "", SSH_PORT,
23
+ server_host_keys=["ssh_host_key"],
24
+ process_factory=handle_client,
25
+ authorized_client_keys=None,
26
+ password_auth=True,
27
+ username_passwords={SSH_USER: SSH_PASSWORD}
28
+ )
29
 
30
  @app.route('/')
31
  def home():
32
+ """Пробрасываем SSH через Ngrok"""
33
+ ssh_tunnel = pyngrok.ngrok.connect(SSH_PORT, "tcp")
34
+ return f"SSH доступ: {ssh_tunnel.public_url.replace('tcp://', '')}"
35
+
36
+ if __name__ == "__main__":
37
+ # Генерируем SSH-ключи (если их нет)
38
+ if not os.path.exists("ssh_host_key"):
39
+ os.system("ssh-keygen -b 2048 -t rsa -f ssh_host_key -N ''")
40
+
41
+ # Запускаем SSH сервер асинхронно
42
+ loop = asyncio.get_event_loop()
43
+ loop.create_task(start_ssh_server())
44
 
45
+ # Запускаем Flask
46
  app.run(host="0.0.0.0", port=7860)