উত্তর:
ডিফল্টরূপে, আপনি যখন ssh ব্যবহার করে দূরবর্তী মেশিনে একটি কমান্ড চালান, তখন একটি টিটিওয়াই দূরবর্তী সেশনের জন্য বরাদ্দ করা হয় না। এটি আপনাকে টিটিওয়াই কোয়ার্কের সাথে ডিল না করে বাইনারি ডেটা ইত্যাদি স্থানান্তর করতে দেয়। কমান্ডটি কার্যকর করার জন্য এটি পরিবেশ সরবরাহ করে computerone
।
যাইহোক, আপনি যখন রিমোট কমান্ড ছাড়াই ssh চালান, এটি একটি টিটিওয়াই বরাদ্দ দেয়, কারণ আপনি সম্ভবত শেল সেশন চালাচ্ছেন। ssh otheruser@computertwo.com
কমান্ড দ্বারা এটি প্রত্যাশিত , তবে পূর্ববর্তী ব্যাখ্যাটির কারণে, command কমান্ডের জন্য কোনও টিটিওয়াই উপলব্ধ নেই।
আপনি যদি শেলটি চান computertwo
, পরিবর্তে এটি ব্যবহার করুন, যা দূরবর্তী মৃত্যুর সময় TTY বরাদ্দকে বাধ্য করবে:
ssh -t user@computerone.com 'ssh otheruser@computertwo.com'
এটি সাধারণত উপযুক্ত যখন আপনি শেষ পর্যন্ত এসএস চেইনের শেষে শেল বা অন্যান্য ইন্টারেক্টিভ প্রক্রিয়া চালাচ্ছেন। আপনি যদি ডেটা ট্রান্সফার করতে যাচ্ছেন তবে এটি যোগ করাও যথাযথ নয় এবং প্রয়োজনও নয় -t
, তবে প্রতিটি এসএসএস কমান্ডের মধ্যে ডেটা উত্পাদনকারী বা-কনসুমিং কমান্ড থাকবে, যেমন:
ssh user@computerone.com 'ssh otheruser@computertwo.com "cat /boot/vmlinuz"'
রিলে হিসাবে এসএসএইচ ব্যবহারের আরও ভাল উপায় আছে: ProxyCommand
বিকল্পটি ব্যবহার করুন । আপনার ক্লায়েন্ট মেশিনে একটি কী থাকা দরকার যা আপনাকে দ্বিতীয় কম্পিউটারে লগ ইন করতে দেয় (পাবলিক কী হ'ল বেশিরভাগ পরিস্থিতিতে এসএসএইচ ব্যবহারের প্রস্তাবিত উপায়)। এটি আপনার রাখুন ~/.ssh/config
এবং চালান ssh computertwo
।
Host computerone
HostName computerone.com
UserName user
Host computertwo
HostName computertwo.com
UserName otheruser
ProxyCommand ssh computerone exec nc %h %p
nc
হয় netcat । বিভিন্ন সংস্করণ উপলব্ধ যে কোনও করতে হবে।
আপনি ssh এ প্রক্সি জাম্প বিকল্পটি ব্যবহার করতে পারেন
-J [user@]host[:port]
Connect to the target host by first making a ssh connection to the jump host and then establishing a TCP forwarding to the ultimate destination from there. Multiple jump hops may be specified
separated by comma characters. This is a shortcut to specify a ProxyJump configuration directive.
সুতরাং আমার যদি হোস্টবিতে সংযোগ স্থাপন করতে হয় তবে সেখানে যাওয়ার জন্য আমাকে প্রথমে হোস্টএ দিয়ে যেতে হবে। সাধারণত আমি চাই
ssh hostA
[user@hostA ~]$ ssh hostB
আমি এখন এই কাজ
ssh -J hostA hostB
[user@hostB ~]$
আপনি কমান্ড লাইন থেকে একটি এসএসএইচ কনফিগারেশন বিকল্প "রিকোয়েস্টটিটিওয়াই" ওভাররাইড করতে পারেন।
আমার কার্যকারী উদাহরণটি একাধিক কমান্ড চালানোর পরে এসএসএইচ সেশনে cd-serv-one.sh
শুরু /bin/bash
হয়:
#!/bin/bash
ssh -o "requestTTY=yes" User@ExampleHostName "cd /home/myPathFoo/myPathBar; /bin/bash"
এবং এখন আমি কেবল ./cd-serv-one.sh
প্রয়োজনীয় এসএসএইচ সেশন শুরু করার জন্য চালাচ্ছি ।
ssh
!