Tôi đang trong quá trình viết một ứng dụng có giao diện người dùng Urwid và một back-end MongoDB trong python. Mục tiêu cuối cùng là để có thể phục vụ ứng dụng qua SSH. Ứng dụng này có hệ thống xác thực/nhận dạng riêng. Tôi không quan tâm đến chi phí phát hành một quy trình mới cho mỗi người dùng, số lượng người dùng đồng thời dự kiến sẽ thấp. Vì máy khách không nhớ bất kỳ thông tin trạng thái nào và thay vào đó nó được lưu trữ trong DB, tôi không quan tâm đến các phiên như vậy ngoại trừ các mục đích xác thực.Cách phân phối ứng dụng Python CLI qua SSH
Tôi đã tự hỏi liệu có bất kỳ phương pháp nào để phân phối ứng dụng như không cần phải cuộn mã socket-server của riêng tôi hay mã hóa lại ứng dụng bằng Twisted. Tôi thành thật không biết làm thế nào Urwid và Twisted chơi với nhau. Tôi thấy rằng Urwid có một phương pháp TwistedEventLoop mà purports sử dụng lò phản ứng xoắn nhưng tôi không thể tìm thấy bất kỳ mã ví dụ chạy một ứng dụng Urwid qua một kết nối xoắn. Ví dụ sẽ được đánh giá cao, ngay cả những cái đơn giản. Tôi cũng đã nhìn ZeroMQ nhưng điều đó có vẻ còn khó hiểu hơn cả Twisted. Tóm lại, tôi đã khám phá một số thư viện khác nhau nhằm phục vụ các ứng dụng trên tcp, hầu hết trong số đó là telnet. Và gần như tất cả đều tập trung vào http.
Kịch bản trường hợp xấu nhất Tôi hy vọng rằng tôi có thể tạo một người dùng cực kỳ bị khóa dưới dạng đăng nhập toàn cục và sử dụng các phiên SSH được chroot. theo cách đó, mỗi người dùng có chroot/process/client của riêng họ. Vâng, tôi biết đó có thể là "Ý tưởng rất xấu (tm)". Nhưng tôi phải ném nó ra ngoài như một khả năng.
Tôi đánh giá cao mọi phản hồi mang tính xây dựng. Những lời lăng mạ, gian lận, và kiêu ngạo sẽ bị cau có, in ra và nhổ vào.
-CH
Nghe có vẻ thú vị. Tôi nhìn vào đó, stunnel có thể cung cấp một wrapper ssl và xinetd có thể xử lý các kết nối. Hừm. Cảm ơn bạn. – TehCorwiz
Đây có thể là cách hợp lý và ít tốn kém: tuy nhiên, xin lưu ý rằng "SSL" và "SSH" không phải là cùng một giao thức. – Glyph