Starchik commited on
Commit
181ae35
·
verified ·
1 Parent(s): 3bed305

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -10
app.py CHANGED
@@ -3,6 +3,7 @@ import asyncio
3
  import asyncssh
4
  import os
5
  import sys
 
6
 
7
  # Класс сессии: обрабатывает подключение и ввод данных
8
  class MySSHServerSession(asyncssh.SSHServerSession):
@@ -31,27 +32,30 @@ class MySSHServer(asyncssh.SSHServer):
31
  return MySSHServerSession()
32
 
33
  async def begin_auth(self, username):
34
- # Простой способ проверки, разрешаем любые логины
35
  return True
36
 
 
 
 
 
 
 
37
  # Функция для запуска сервера
38
  async def start_ssh_server():
39
  # Читаем порт из переменной окружения PORT (по умолчанию 2222)
40
  port = int(os.environ.get('PORT', 2222))
41
 
42
- # Если задан путь к файлу ключа (переменная HOST_KEY_FILE) и он существует, используем его.
43
- # Иначе генерируем временный ключ.
44
- host_key_file = os.environ.get('HOST_KEY_FILE')
45
- if host_key_file and os.path.exists(host_key_file):
46
- host_keys = [host_key_file]
47
- else:
48
- print("Генерация временного ключа сервера...", file=sys.stderr)
49
- host_keys = [asyncssh.generate_private_key('ssh-rsa')]
50
 
51
  try:
 
 
 
52
  server = await asyncssh.create_server(
53
  MySSHServer, '', port,
54
- server_host_keys=host_keys
55
  )
56
  except (OSError, asyncssh.Error) as exc:
57
  sys.exit('Ошибка при запуске сервера: ' + str(exc))
 
3
  import asyncssh
4
  import os
5
  import sys
6
+ from io import BytesIO
7
 
8
  # Класс сессии: обрабатывает подключение и ввод данных
9
  class MySSHServerSession(asyncssh.SSHServerSession):
 
32
  return MySSHServerSession()
33
 
34
  async def begin_auth(self, username):
35
+ # Простой способ проверки: разрешаем любые логины
36
  return True
37
 
38
+ # Генерация временного SSH-ключа в памяти
39
+ def generate_temp_ssh_key():
40
+ private_key = asyncssh.generate_private_key('ssh-rsa')
41
+ private_key_str = private_key.private_bytes().decode('utf-8')
42
+ return private_key_str
43
+
44
  # Функция для запуска сервера
45
  async def start_ssh_server():
46
  # Читаем порт из переменной окружения PORT (по умолчанию 2222)
47
  port = int(os.environ.get('PORT', 2222))
48
 
49
+ # Генерация временного ключа в памяти
50
+ private_key_str = generate_temp_ssh_key()
 
 
 
 
 
 
51
 
52
  try:
53
+ # Используем приватный ключ из памяти
54
+ private_key = asyncssh.import_private_key(private_key_str)
55
+
56
  server = await asyncssh.create_server(
57
  MySSHServer, '', port,
58
+ server_host_keys=[private_key]
59
  )
60
  except (OSError, asyncssh.Error) as exc:
61
  sys.exit('Ошибка при запуске сервера: ' + str(exc))