بيثون - كيفية استخدام محارة لإنشاء ملقم SSH الظاهري

StackOverflow https://stackoverflow.com/questions/186316

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أبحث في إنشاء ملقم في بيثون أستطيع أن تشغيل، وسوف تعمل كخادم SSH. وهذا لتسمح لمختلف المستخدمين تسجيل الدخول، وتتصرف كما لو انها تريد تسجيل في العادة، ولكن كان فقط الوصول إلى أمر واحد.

وأريد أن أفعل هذا لدرجة أنني يمكن أن يكون لها نظام حيث يمكنني أن أضيف للمستخدمين دون الحاجة إلى إنشاء حساب نطاق المنظومة، بحيث يمكن بعد ذلك، على سبيل المثال، الالتزام فرع VCS، أو ما شابه ذلك.

وحين أستطيع أن العمل على كيفية القيام بذلك مع محارة لحملها على قذيفة "العرف" ... لا أستطيع معرفة كيفية جعله بحيث يعمل تيار SSH كما لو كانت حقيقية واحدة ( أنا يفضل الرغبة في الحد من / بن / BZR بحيث BZR + سه ستعمل.

ويجب أن يكون في بيثون (التي يمكنني الحصول على القيام ترخيص)، ولكن لا أعرف كيفية القيام الربط إلى التطبيق.

وهذا يجب أن يكون في بيثون للعمل ضمن التطبيق المصممة من أجل، وتكون قادرة على أن تستخدم لأولئك الذين لا يستطيعون الحصول على إضافة مستخدمين جدد

هل كانت مفيدة؟

المحلول

وعندما تكتب الخادم محارة، يمكنك السيطرة على ما يحدث عندما يقوم العميل طلب قذيفة من خلال تنفيذ <وأ href = "http://twistedmatrix.com/trac/browser/trunk/twisted/conch/interfaces.py ؟ دوران المحرك = 24441 # L62 "يختلط =" noreferrer "> ISession.openShell . سيقوم الملقم القوقع طلب IConchUser من المجال الخاص بك ومن ثم التكيف تجسد الآلهة مما أدى إلى ISession للاتصال openShell عليه إذا لزم الأمر.

وظيفة ISession.openShell هو اتخاذ الكائن النقل تمريرها إليه وربطه مع بروتوكول لتفسير بايت تلقى منه، وإذا رغبت في ذلك، لكتابة بايت إليها ليتم إرسالها إلى العميل.

في تطور مؤسف، الكائن الذي تم تمريره إلى openShell الذي يمثل النقل هو في الواقع <لأ href = "http://twistedmatrix.com/trac/browser/trunk/twisted/internet/interfaces.py؟rev=24441 # L1028 "يختلط =" noreferrer "> IProcessProtocol مزود . هذا يعني أنك تحتاج إلى استدعاء makeConnection على ذلك، تمرير IProcessTransport مزود. عند تلقي البيانات من العميل، فإن IProcessProtocol الاتصال <لأ href = "http://twistedmatrix.com/trac/browser/trunk/twisted/internet/interfaces.py؟rev=24441#L1282" يختلط = "noreferrer" > writeToChild على نقل تمرر إلى makeConnection. عندما كنت ترغب في إرسال البيانات إلى العميل، يجب عليك الاتصال <لأ href = "http://twistedmatrix.com/trac/browser/trunk/twisted/internet/interfaces.py؟rev=24441#L1043" يختلط = "noreferrer "> childDataReceived على ذلك.

لمعرفة السلوك المحدد، أقترح قراءة <لأ href = "http://twistedmatrix.com/trac/browser/trunk/twisted/conch/ssh/session.py؟rev=24441#L173" يختلط = " noreferrer "> تنفيذ IProcessProtocol الذي تم تمريره في . لا تعتمد على أي شيء هذا ليس جزءا من IProcessProtocol، ولكن يمكن رؤية تنفيذ جعلها أسهل للفهم ما يجري.

ويمكنك أيضا أن ننظر إلى لل تنفيذ قذيفة خلق وضعها الطبيعي للحصول على شعور ما كنت تهدف ل. هذا وسوف تعطيك فكرة عن كيفية ربط stdio عملية طفل BZR قمت بتشغيل مع قناة SSH.

نصائح أخرى

وعلى الرغم بيثون هو حقا لغتي المفضلة، أعتقد أنك لا تحتاج إلى إنشاء كنت تملك الخادم لهذا الغرض. عند إلقاء نظرة على المفتوح Manualpage لسشد الذي 'ليرة لبنانية العثور على خيارات "القيادة" لملف مفاتيح أذن التي تمكنك من تحديد أمر معين لتشغيل على تسجيل الدخول.

وعن طريق المفاتيح، يمكنك استخدام حساب نظام واحد للسماح للكثير من المستخدمين لتسجيل الدخول، فقط وضعت مفاتيح العامة في ملف مفاتيح أذن الحساب.

ونحن نستخدم هذا إلى إنشاء أنفاق SSH لSVN ويعمل كبيرة فقط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top