সংযুক্ত দূরবর্তী এসএসএইচ হোস্ট থেকে স্থানীয় কম্পিউটারে একটি কমান্ড চালাবেন?


13

বলুন আমি এসএসএইচ এর মাধ্যমে একটি রিমোট কম্পিউটারের সাথে সংযুক্ত হয়েছি। এই দূরবর্তী কম্পিউটারের একটি প্রোগ্রাম থেকে, আমার স্থানীয় কম্পিউটারে (সংযোগের সূচনা) কমান্ড চালানো দরকার।

যা প্রশ্ন উত্থাপন করে: স্থানীয় কম্পিউটারে একটি কমান্ড চালানোর জন্য দুটি কম্পিউটারের মধ্যে বিদ্যমান সংযোগটি জোঁক করা কি সম্ভব?

ssh user@host-of-connecting-party <command>বিপরীত সংযোগ স্থাপনের জন্য আমি দূরবর্তী কম্পিউটারে কমান্ড চালানো বিবেচনা করেছি । তবে এটি স্বয়ংক্রিয়ভাবে করা শক্ত এবং ব্যবহারকারীর হস্তক্ষেপ প্রয়োজন। আমি আশা করছিলাম যে আমি এটি পুরোপুরি স্বয়ংক্রিয় করতে পারি, বা সংযুক্ত ব্যবহারকারীর / হোস্ট-নেম অন্তত সনাক্ত করতে পারি।


আপনি কি করতে চান তা পরিষ্কার। আমার কাছে যা স্পষ্ট নয় তা হ'ল সেই অংশটি যেখানে আপনি বলছেন "আমি আশা করছিলাম যে আমি এটি সম্পূর্ণরূপে স্বয়ংক্রিয় করতে পারব, বা কমপক্ষে সংযুক্ত ব্যবহারকারীর ব্যবহারকারী / হোস্টনেম সনাক্ত করব।" আপনি কি বোঝাতে চেয়েছেন?
হাইট্রোমো

"স্বয়ংক্রিয়ভাবে কঠিন এবং ব্যবহারকারীর হস্তক্ষেপের প্রয়োজন হবে" এই ক্ষেত্রে "সুরক্ষিত" সমার্থক। যদি কোনও দূরবর্তী হোস্ট তার সাথে সংযুক্ত ক্লায়েন্টদের উপর কমান্ড চালাতে সক্ষম হয় তবে এটি অত্যন্ত সুরক্ষিত হবে ... কল্পনা করুন যে কোনও সার্ভার আপোস হয়েছে এবং যে কেউ এটির সাথে সংযুক্ত হয় কেবল তাদের স্থানীয় মেশিন সংক্রামিত হয় ... এটি মজাদার হবে :)
সের্গেই

উত্তর:


5

আমার মাঝে মাঝে অনুরূপ প্রয়োজন হয়, যতক্ষণ না আমি পুটিকে আমাদের ভিপিএন সার্ভারের সাথে এবং সেখান থেকে এসএসএসের মাধ্যমে অন্য কোনও হোস্টের সাথে সংযুক্ত করি, যা ভিপিএন সেটআপের কারণে সরাসরি আমার পক্ষে পৌঁছানো যায় না।

আমার "ssh- অধিবেশন" চলমান থাকা অবস্থায় কখনও কখনও আমাকে খুব দ্রুত ভিপিএন সার্ভার মেশিনে কিছু পরীক্ষা করতে হবে। একটি পদ্ধতির অধীনে একটি ssh অধিবেশন চালানো হয় screen, যা আমি লক্ষ্য করেছি যে, "নিয়মিত এসএসএস" এর সাথে তুলনায় কিছুটা বিলম্ব যোগ করুন। আরেকটি পদ্ধতির, যা আমি এখানে ভাগ করতে চাই, তা হল:

এসএসএইচ অধিবেশন চলাকালীন, টিপুন Enter, তারপরে ~, (নিশ্চিত করুন এটি প্রদর্শিত হচ্ছে না, অর্থাৎ আপনি কমান্ড মোডে রয়েছেন), তারপরে Ctrl- Z। এটি ssh ক্লায়েন্ট প্রক্রিয়াটিকে একটি "হোস্ট" এর পটভূমিতে রাখবে এবং আপনি এর লাইনে কিছু পাবেন:

[root@client170 ~]# ~^Z [suspend ssh]

[1]+  Stopped                 ssh root@10.0.0.167
[root@vps291736 ~]#

এখন আপনি "হোস্ট" এ আছেন, আপনি যা কিছু করতে পারেন তা করতে পারেন (যদিও, আমি নিশ্চিত নই যে কতক্ষণ ssh অধিবেশন টিকিয়ে রাখা হবে) এবং তারপরে এসএসএইচ সেশনে ফিরে আসুন fg

অন্ততপক্ষে, এটি আমার জন্য কাজ করে যখন আমি পন্টির মাধ্যমে উইন 10 ওয়ার্কস্টেশন থেকে সেন্টোস-ভিত্তিক ভিএম এর সাথে সংযুক্ত থাকি এবং সেই ভিএম থেকে এসএসএইচ দিয়ে অন্য কোনও হোস্টের সাথে সংযোগ স্থাপন করি।

আশা করি এটি কাউকে সাহায্য করবে!


2
আপনি যদি PermitLocalCommand yesআপনার .ssh/configএকটি হোস্ট জন্য, আপনি কি করতে পারেন <Enter>~Cতাহলে !<command>
মুড়ু

5

@ 62mkv এর উত্তরটি আরও ভাল সমাধান। যে ব্যবহার।

যদিও সম্পূর্ণতা এবং কৌতূহল জন্য, আপনার স্থানীয় মেশিনে যদি একটি ssh সার্ভার চলমান থাকে, আপনি 20202 বন্দরটিতে দূরবর্তী হোস্ট থেকে পোর্ট 22-এ স্থানীয় একটিতে ssh সংযোগ স্থাপনের জন্য একটি ssh টানেল তৈরি করতে পারেন Example উদাহরণ কমান্ড:

ssh -R20202:localhost:22 remoteuser@remotehost.com

এটি কোনও এসএসএস সংযোগ শুরু করবে, তবে আপনার মেশিনে চলমান এসএসএস সার্ভারে ফিরে একটি সুড়ঙ্গ স্থাপন করবে। তারপরে আপনি এটি করতে পারেন, যখন দূরবর্তী হোস্টে ssh'ed করা হয়:

ssh -p 20202 localuser@localhost

অবশ্যই, এটি দ্রুত বিভ্রান্ত হতে পারে - বিশেষত যদি কৌশলটি একাধিকবার বাসা বাঁধে। এটি কিছুটা বিলম্বিতাও যুক্ত করে - যেহেতু আপনি আপনার স্থানীয় মেশিনে চালিত সমস্ত কিছুই দূরবর্তী হোস্টের মাধ্যমে বাউন্স করা হয়।

যাদের কৌতূহল এখনও সন্তুষ্ট হয়নি তাদের জন্য এসএসএস টানেলিং সম্পর্কিত অতিরিক্ত তথ্য এই ইউনিক্স স্ট্যাকেক্সচেঞ্জ প্রশ্নের উত্তরে পাওয়া যাবে ।


এটি একটি দুর্দান্ত উত্তর। ফায়ারওয়ালের পিছনে ছিল এমন একটি রিমোট মেশিনে এসএসএস করতে সক্ষম হওয়ার জন্য আমার ঠিক কী দরকার ছিল যা কেবল টিমনিউয়ারের মাধ্যমে অ্যাক্সেসযোগ্য ছিল। আমি কেবল টিমভিউয়ারের মাধ্যমে তারপরেই টিমভিউয়ার সেশন থেকে আবার আমার মেশিনে এসএসএস টানেল তৈরির মাধ্যমে সংযুক্ত হয়েছি এবং তারপরে আমি আমার কম্পিউটার থেকে দূরবর্তীতে যতটা এসএসএস সেশন প্রয়োজন হিসাবে খুলতে পারি।
মারিয়ান

আসলে এটি @ মারিয়ানের মতো একটি টানেলের জন্য এটি অনেক বেশি ভাল ব্যবহারের ক্ষেত্রে। আমি নিজেই এটি করি
তারকাবিআমরনোলাবস

0

আপনার স্থানীয় এবং দূরবর্তী কম্পিউটার উভয়ই যদি ইন্টারনেট থেকে অ্যাক্সেসযোগ্য হয় তবে আপনি কেবলমাত্র স্থানীয় কম্পিউটার থেকে দূরবর্তী কম্পিউটারে একটি এসএসএইচ সেশন খুলতে পারেন, এবং তারপরে সেই সেশনে স্থানীয় কম্পিউটারে রিমোট কম্পিউটার থেকে অন্য একটি এসএসইশন সেশনটি খুলুন:

localuser@local> ssh remoteuser@remote
Password:
remoteuser@remote> hostname
remote
remoteuser@remote> ssh localuser@local
Password:
localuser@local> hostname
local
localuser@local> exit
remoteuser@remote> exit
localuser@local>

স্বয়ংক্রিয় স্টাফগুলির জন্য ফ্যাব্রিকের দিকে একবার নজর দিন (পাইথনের জ্ঞান প্রয়োজন)

from fabric.api import *

@hosts('host1')
def clean_and_upload():
    local('find assets/ -name "*.DS_Store" -exec rm '{}' \;')
    local('tar czf /tmp/assets.tgz assets/')
    put('/tmp/assets.tgz', '/tmp/assets.tgz')
    with cd('/var/www/myapp/'):
        run('tar xzf /tmp/assets.tgz')

0

আপনি রিমোট কম্পিউটারের সাথে সংযোগ করতে এবং কমান্ডগুলি চালাতে sshpass ব্যবহার করতে পারেন ।

./sshpass -p "password" ssh user@remoteIP 'bash -s < EOI "Your Commands go here" EOI'

স্থানীয় কম্পিউটারে সহজ শেল স্ক্রিপ্ট ব্যবহার করুন এবং যখনই আপনি দূরবর্তী কম্পিউটারে কমান্ড চালাতে চান উপরে কোড ব্যবহার করুন। আমি অটোমেশনে সাধারণত যেভাবে ব্যবহার করি এটি এটি।


0

না, আপনি বিদ্যমান অধিবেশন ভাঙতে পারবেন না।

আপনার অ্যাপ্লিকেশনটির ক্লায়েন্টের সাথে ফিরে সংযোগ করার জন্য একটি উপায় প্রয়োজন। এসএসএইচ কাজ করবে যদি ক্লায়েন্টের একটি এসএসএইচ সার্ভার চলমান থাকে এবং সার্ভার ক্লায়েন্টের 22 পোর্টে পৌঁছতে পারে। আপনি যদি পাসওয়ার্ড প্রমাণীকরণের পরিবর্তে কী-ভিত্তিক প্রমাণীকরণ ব্যবহার করেন তবে স্বয়ংক্রিয় হওয়া শক্ত হবে না - এইভাবে ব্যবহারকারীর হস্তক্ষেপের প্রয়োজন হবে না।

কী ভিত্তিক প্রমাণীকরণ স্থাপনের তথ্য এখানে পাওয়া যাবে: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh- made-easy/


0

আপনার যদি অন্য টার্মিনালে অ্যাক্সেস থাকে তবে আপনি সংযোগটি শুরু করা ssh কমান্ডে "কিল -19 পিআইডি" ব্যবহার করে সাইনস্টপ পাঠাতে পারেন। তারপরে আপনি ক্লায়েন্ট মেশিনে টার্মিনালে টার্মিনালের নিয়ন্ত্রণ পাবেন। একবার শেষ হয়ে গেলে, আপনি ssh ক্লায়েন্টকে জাগাতে কেবল fg টাইপ করে ssh সংযোগটি পুনরুদ্ধার করতে পারেন।

তবে অবশ্যই এখানে প্রশ্নটি হ'ল: যদি আপনার ক্লায়েন্ট মেশিনে ইতিমধ্যে একটি টার্মিনাল থাকে তবে আপনি এটি কেন করবেন :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.