যখন কোনও পোর্ট ফরওয়ার্ডিং ব্যর্থ হয় তখন কি আমি এসএসএইচকে ব্যর্থ করতে পারি?


39

আমি যদি রিমোট পোর্টটি ফরোয়ার্ড করি, একটি লা -R 3690:localhost:3690যখন দূরবর্তী হোস্টের বন্দরে ইতিমধ্যে একটি বন্ডিং উপস্থিত থাকে, আমি এই সতর্কতাটি পাই:

Warning: remote port forwarding failed for listen port 3690

এসএসএস ব্যর্থ হওয়ার কোনও উপায় আছে (যেমন ননজারো রিটার্ন কোড সহ প্রস্থান করুন), কেবল কোনও সতর্কতা ছাড়াই?


আপনার কি আসলেই টার্মিনাল চ্যানেলটি তৈরি করা দরকার, বা কেবল ফরওয়ার্ডিং?
Ignacio Vazquez-Abram

1
@ IgnacioVazquez- আব্রামস: স্রেফ ফরওয়ার্ডিং।
ম্যাট জয়েনার

উত্তর:


63

চালান

ssh -o "ExitOnForwardFailure yes" ...

বা করা

ExitOnForwardFailure yes

মধ্যে ~/.ssh/config। দেখুন man ssh_configবিস্তারিত জানার জন্য।


দুর্ভাগ্যক্রমে আমার কাছে ওপেনএসএইচ ৪ আছে যখন আপনি এই বৈশিষ্ট্যটি যুক্ত করা হয়েছিল আমাকে বলতে পারেন?
ম্যাট জয়েনার

2
না, আমি জানি না। এটি সংস্করণ 5 বৈশিষ্ট্য হতে পারে। তবে সংস্করণ 4 অবশ্যই এখন অনেক বছর পুরাতন হতে হবে এবং সর্বদা সুরক্ষা স্থির রয়েছে । আপনি যদি সার্ভারটি নিজে আপগ্রেড করতে না পারেন তবে আপনি নিজের সার্ভার অ্যাডমিনকে জিজ্ঞাসা করতে চাইতে পারেন যে তিনি যদি এই সংস্করণটি ব্যবহার করা নিরাপদ মনে করেন।
অ্যান্ড্রু শুলম্যান

সচেতন থাকুন যে আপনি যদি স্পষ্টভাবে নির্দিষ্ট না করে bind_addressতবুও ssh ব্যর্থ নাও হতে পারে। উদাহরণস্বরূপ, যদি অন্য ব্যবহারকারী ইতিমধ্যে ipv6 লোকালহোস্টে শুনছেন [::1]:3690তবে ssh কেবলমাত্র ipv4 বাঁধতে পারে 127.0.0.1:3690এবং অভিযোগ করে না। তবে আপনার এসএনএন ক্লায়েন্ট সম্ভবত আইপিভি 6 সকেট (আক্রমণকারীর) পছন্দ করবে। নিরাপদে আরও ভাল ব্যবহারের জন্য-R [::1]:3690:localhost:3690 -R 127.0.0.1:3690:localhost:3690
rudimeier

3
সাদা স্থান এবং উদ্ধৃতি দেওয়ার প্রয়োজনীয়তা এড়াতে কেউ ssh -o ExitOnForwardFailure = হ্যাঁ ব্যবহার করতে পারে।
ফ্রিস্পেস

1

আমি ফরওয়ার্ডিং সঠিকভাবে খোলা হয়েছিল তা নিশ্চিত করতে লক্ষ্য হোস্টে ব্যাশ স্ক্রিপ্ট ব্যবহার করি। এসএসএইচ সংযোগটি এটি চালাবে এবং পোর্ট ফরওয়ার্ডিংয়ের ক্ষেত্রে কোনও সমস্যা থাকলে, প্রস্থান করবে eg

ক্লায়েন্ট সাইড স্ক্রিপ্ট: (এটি পোর্ট ফরওয়ার্ডিং সেটিংসের জন্য .ssh / কনফিগারেশন ব্যবহার করে)

#!/bin/bash    

while true; do
    echo -n starting at : "
    date
    ssh user@server bin/sshloop.sh
    echo "got back, sleeping 17 "
    sleep 17
done 

সার্ভার সাইড স্ক্রিপ্ট (বিন / sshloop.sh)

#!/bin/bash

while true; do 
  echo $(date)" : SSH Reverse 1090:80, 1232:22 From Server to Client"
  sleep 17
  if ! netstat -an | grep -q ":::1090 " ; then
     echo "1090 forward missing, bailing out"
     exit
  fi
done

এমনকি ক্লায়েন্ট সাইড স্ক্রিপ্ট -dmS এর সাথে স্ক্রিনের অধীনে চালাতে পারেন


2
যে কেসটি আমি এড়াতে চাইছি সেটি হ'ল একটি পোর্ট ফরোয়ার্ড ইতিমধ্যে উপস্থিত রয়েছে এবং একটি সতর্কতা দেওয়া হয়েছে। আমি মনে করি এই স্ক্রিপ্টটি ব্যর্থতার পরিবর্তে বন্দরের কোনও বিদ্যমান বাইন্ডিংটিকে সাফল্য হিসাবে বিবেচনা করবে।
ম্যাট জয়েনার

1
এটা সত্য. আমার সমস্যাটি একই স্ক্রিপ্টটির সাথে ছিল সময় শেষ হওয়ার কয়েক মিনিটের আগে পোর্টটি খোলা রাখা। থিসি স্ক্রিপ্টটি প্রস্থান করে কয়েকবার পুনরায় চালিত হবে যার পরে বন্দরটি আবার খোলা হবে। কারা বন্দরের মালিক তা নিশ্চিত করার জন্য আপনার যদি জানতে হবে তবে আপনি সুডো এবং গ্রেপিংয়ের সাথে নেটস্যাট্যান্ট চালানোর চেষ্টা করতে পারেন।
অ্যান্টি রাইতস্লা সার্কেলগুলি

@ অ্যান্টিরিটসিলিক্রাইক্লস কনসাল্ট: নোট করুন যে আপনার প্রক্রিয়া আইডিটি পরীক্ষা করতে হবে, যেমন "ssh" এর সাথে মিলে যাওয়া প্রক্রিয়া নাম হিসাবে এখনও এসএসএইচ ক্লায়েন্টদের মধ্যে কোনটি আপনাকে এই বন্দরে ফরোয়ার্ড করছে তা আপনাকে জানায় না।
পিসকভোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.