HTTP CONNECT সহায়কটি লক্ষ্য SSH সার্ভারে একটি টানেল ফিরিয়ে দেওয়ার পরে, সেই স্ট্রিমটি Paramiko-কে দিন:

with paramiko.SSHClient() as client:
    client.load_system_host_keys()
    client.connect('ssh.example.com',
                   username='operator',
                   sock=tunnel,
                   banner_timeout=10,
                   auth_timeout=10)
    # Use the verified SSH connection.

উদাহরণের হোস্ট প্রতিস্থাপন করুন এবং ডিপ্লয়মেন্টের সঠিক known-hosts ডেটা লোড করুন। tunnel আগেই সেই একই সার্ভারে নিয়ে যাওয়া উচিত। connect-তে পাঠানো হোস্টনাম SSH হোস্ট কী চিহ্নিত করে, প্রক্সি নয়।

sock ইন্টারফেস একটি খোলা সকেট বা সকেট-সদৃশ বস্তু গ্রহণ করে। এটি আপনার হয়ে HTTP আলোচনা করে না। ফেরত দেওয়ার আগে সংযোগকারীকে অবশ্যই:

  1. প্রক্সিতে সংযোগ করে গন্তব্যের জন্য একটি বৈধ CONNECT অনুরোধ পাঠাতে হবে।
  2. সমর্থিত যেকোনো প্রক্সি প্রমাণীকরণ সম্পূর্ণ করে সফল টানেল স্ট্যাটাস যাচাই করতে হবে।
  3. সম্পূর্ণ প্রক্সি হেডার অংশ পড়তে হবে, আংশিক পাঠ সামলাতে হবে এবং সীমানার বাইরের বাইট সংরক্ষণ করতে হবে।
  4. সেটআপ সীমাবদ্ধ করতে হবে এবং প্রত্যাখ্যাত/ত্রুটিপূর্ণ সকেটগুলো তার পরিষ্কার পথে বন্ধ করতে হবে।

সেই কাজের জন্য একটি রক্ষণাবেক্ষণকৃত সংযোগকারী ব্যবহার করুন। একটি প্রাপ্তি বাফারে ইংরেজি সফলতার বাক্যাংশ খুঁজলে বিভক্ত স্ট্যাটাস লাইন, পরিবর্তনশীল কারণ পাঠ্য এবং অসম্পূর্ণ হেডার মিস হয়। সফল প্রক্সি TCP সংযোগই গৃহীত SSH টানেল নয়।

প্রক্সিকে অনুরোধকৃত SSH পোর্ট অনুমোদন করতে হবে; ওয়েব ব্রাউজিং অনুমতি পোর্ট 22-তে CONNECT প্রবেশ প্রতিষ্ঠা করে না। SSH লগইনের আগে 407 ঘটে, আর SSH অ্যাকাউন্ট ব্যর্থতা টানেলের পরে ঘটে। ওই অ্যাকাউন্টগুলো আলাদা রাখুন।

শেষ হলে SSH ক্লায়েন্ট এবং সংযোগকারীর মালিকানাধীন সম্পদ বন্ধ করুন। একটি কাজ তার পাঠ বন্ধ করলেই জীবন্ত সংযোগ বন্ধ হয় না।

সম্পর্কিত নিবন্ধ