
पुनर्निर्मित SSH ओवर USTPS
USSH एक शेल प्रोटोकॉल और क्लाइंट/सर्वर जोड़ी है जो USTP-Secure के ऊपर बनाई गई है।
यह TCP टनल नहीं है और SSH को TCP के अंदर रैप नहीं करता है।
स्थिति: बीटा
लाइसेंस: MIT
chacha20 = CHACHA20_POLY1305aes-256-gcm = AES_256_GCMaes-128-gcm = AES_128_GCMchacha205322python3 ussh_server.py \
--peer-ip <CLIENT_IP_OR_DOMAIN> \
--peer-port 0 \
--bind-ip 0.0.0.0 \
--bind-port 5322 \
--cipher chacha20 \
--congestion-control auto
यदि --password छोड़ दिया गया है, तो सर्वर स्टार्टअप पर USSH लॉगिन पासवर्ड के लिए संकेत देता है।
इंटरैक्टिव स्टार्टअप पर, सर्वर पूछता है कि क्या उसे खुद को systemd सेवा के रूप में स्थापित करना चाहिए। इसे सामान्य रूप से चलाने के लिए n उत्तर दें। उस प्रश्न को छोड़ने के लिए --no-systemd-prompt का उपयोग करें।
python3 ussh_client.py \
--peer-ip <SERVER_IP_OR_DOMAIN> \
--peer-port 5322 \
--bind-ip 0.0.0.0 \
--bind-port 0 \
--cipher chacha20 \
--congestion-control off \
--cleartext off
क्लाइंट SSH की तरह पासवर्ड के लिए इंटरैक्टिव रूप से संकेत देता है।
क्लाइंट पहली बार देखी गई सर्वर X25519 सार्वजनिक कुंजी को ~/.ussh_known_hosts.json में संग्रहीत करता है।
यदि वह कुंजी बाद में बदलती है, तो क्लाइंट नई कुंजी पर चुपचाप भरोसा करने के बजाय TOFU बेमेल त्रुटि के साथ रुक जाता है।
यदि आपने जानबूझकर सर्वर होस्ट कुंजी को घुमाया है, तो इंटरैक्टिव पुष्टि के बाद संग्रहीत TOFU कुंजी को बदलने की अनुमति देने के लिए क्लाइंट को --regen-key के साथ चलाएं।
USSH इंटरनेट-ड्राफ्ट: https://datatracker.ietf.org/doc/draft-x1co-ussh/--cleartext auto|on|off--cleartext on|offauto के साथ, USSH क्लाइंट अनुरोध का पालन करता है।on या off के साथ, सर्वर अंतिम क्लियरटेक्स्ट मोड को बाध्य करता है।--cleartext on का उपयोग किया जाता है, तो USSH एक चेतावनी प्रिंट करता है कि क्लियरटेक्स्ट वास्तविक इंटरनेट पर खतरनाक है और केवल नियंत्रित वातावरण जैसे स्थानीय नेटवर्क में अनुशंसित है।ACK: 10 MAC:<tag>, NACK: 42 MAC:<tag>, HELLO: ..., CLOSE:, साथ ही बाइनरी UPACK (UPAK) DATA फ्रेम।ACK और NACK डिबगेबिलिटी के लिए प्लेनटेक्स्ट रहते हैं, लेकिन वे नकली ACK/NACK नियंत्रण हमलों को रोकने के लिए प्रति-सत्र HMAC टैग के साथ प्रमाणित होते हैं।UPACK DATA पेलोड के 900 बाइट्स की USTPS ट्रांसपोर्ट पेलोड सीमा विरासत में लेता है।IP:port बदलता है, तो वर्तमान USSH सत्र बंद होने की उम्मीद है और उपयोगकर्ता को साफ-सुथरे तरीके से फिर से कनेक्ट करना चाहिए।IP:port पर क्लाइंट को सत्यापित करें, सत्र को उस एंडपॉइंट से बांधें, और यदि एंडपॉइंट बदलता है तो फिर से कनेक्ट करें।USTPS कंजेशन विरासत में लेता है।--congestion-control auto|on|off--congestion-control on|offauto के साथ, USSH क्लाइंट अनुरोध का पालन करता है। सर्वर on या off के साथ, सर्वर अंतिम मोड को बाध्य करता है।stdout बाइट स्ट्रीम को फिर से जोड़ता है।ls, find, या कंपाइलर लॉग जैसे बड़े आउटपुट को दूषित कर सकता है।ussh_server.py चलाने वाली मशीन पर एक वास्तविक PTY-समर्थित शेल लॉन्च करता है।--cipher सेट है, तो सर्वर उसी सटीक सिफर का उपयोग करता है।--cipher छोड़ दिया गया है या auto पर सेट है, तो सर्वर क्लाइंट द्वारा अनुरोधित सिफर का उपयोग करता है।~/.ussh_host_key में एक स्थायी X25519 होस्ट कुंजी रखता है ताकि TOFU पुनः कनेक्शन और पुनरारंभ के दौरान स्थिर रहे।--regen-key का उपयोग केवल तभी करें जब आप जानबूझकर उस होस्ट कुंजी को घुमाना चाहते हैं।<peer-ip-or-domain>:<peer-port> संग्रहीत की जाती हैं, इसलिए एक अलग पते/पोर्ट पर एक अलग सर्वर को एक अलग होस्ट पहचान के रूप में माना जाता है।USTPS कंजेशन on है या off।