@ অব উত্তর এর জন্য ধন্যবাদ , এটি আমাকে অনেক অনুপ্রাণিত করেছে।
আমি খুঁজে পেয়েছি যে আপনি জোর করে এর সাথে আপনার সংযোগটি পুনর্নির্দেশ করতে পারেন ProxyCommand nc dst dst-port।
উদাহরণস্বরূপ, আপনি B.comযদি ব্যবহার করেন তবে প্রকৃতপক্ষে আপনি সংযোগ স্থাপন করবেন
ssh A.com -o ProxyCommand="nc B.com 22"
তবে UserKnownHostsFileএখনও রেকর্ড হবেA.com
সুতরাং আপনি নিজেরটিতে একটি ডোমেন "স্বয়ং" যুক্ত করতে পারেন ssh_config
Host auto.internal-server
Hostname {internal-server ip or domain}
ProxyCommand bash -c '(timeout 0.1 nc -z %h %p) && nc %h %p || ssh -W %h:%p external-server'
আমি এর সাথে প্রতিস্থাপন nc -w 1 %h %pকরেছি (timeout 0.1 nc -z %h %p) && nc %h %p, আপনি যদি 100 মিমি থেকে কম অভ্যন্তরীণ-সার্ভারে পৌঁছতে পারেন তবে এটি আরও দ্রুত হবে।
বা আপনি এর দ্বারা প্রতিস্থাপন করতে পারেন pingতবে আপনি যদি টিসিপি ভিত্তিক প্রক্সি ব্যবহার proxychainsকরেন বা সার্ভার আইসিএমপি প্রতিধ্বনির অনুমতি না দেয় তবে এটি খারাপ তথ্য নির্দেশ করতে পারে ।
Host auto.internal-server
Hostname {internal-server ip or domain}
ProxyCommand bash -c '(ping %h &>/dev/null) && nc %h %p || ssh -W %h:%p external-server'
আপনি (timeout 0.1 nc -z %h %p)অভ্যন্তরীণ-সার্ভারে আছেন কিনা তা সনাক্ত করে এমন কোনও কিছু দিয়ে আপনি প্রতিস্থাপন করতে পারেন ।
আপনার একাধিক প্রার্থী আইপি থাকলেও আপনি এটি ব্যবহার করতে পারেন:
Host auto.internal-server
Hostname {internal-server ip or domain}
ProxyCommand bash -c 'f(){(timeout 0.1 ping -c 1 $1 &>/dev/null) && nc $1 %p;}; f 1.1.1.1 || f 2.2.2.2 || f 3.3.3.3'
এটি সংযোগ দেওয়ার চেষ্টা করবে 1.1.1.1, ব্যর্থ হলে সংযোগ দেওয়ার চেষ্টা করবে 2.2.2.2এবং তারপরেও 3.3.3.3।