সিউডো-টার্মিনাল বরাদ্দ দেওয়া হবে না কারণ স্টিডিন কোনও টার্মিনাল নয়


14

আমি এমন একটি সার্ভারের মাধ্যমে স্বয়ংক্রিয় এসএসএইচ হ্যাপিং সেট আপ করার চেষ্টা করছি যা এনসি নেই।

এটি কমান্ড লাইন থেকে কাজ করে:

ssh -A gateway ssh steve@target

(আমি আমার পাবলিক কীটি এসএসএইচ এজেন্টে যুক্ত করেছি)।

তবে এটি ~ / .ssh / কনফিগারেশনে যুক্ত করলে তা হয় না:

Host target
  User steveb
  ProxyCommand ssh -A gateway ssh steve@targetip

$ ssh target
Pseudo-terminal will not be allocated because stdin is not a terminal.


^CKilled by signal 2.

ইস্যুটি জোর করে দেওয়ার চেষ্টা করা -tমজাদার কিন্তু অহেতুক।

ProxyCommand ssh -A -t gateway ssh steve@targetip

$ ssh target
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.


^CKilled by signal 2.

আরও -t? ভাল না.

ProxyCommand ssh -A -t -t gateway ssh steve@targetip

$ ssh target
tcgetattr: Inappropriate ioctl for device


^CKilled by signal 2.

এটা কি সম্ভব? বেশিরভাগ টিউটোরিয়াল (উদাহরণস্বরূপ: http://www.arrfab.net/blog/?p=246 ) ব্যবহার করার পরামর্শ দেয় nc


নেটকাট প্রয়োজনীয় যে উপসংহার?
মাউন্টেনএক্স

দেখতে এটার মত. এই উদাহরণস্বরূপ, আমি এটি ইনস্টল করতে সক্ষম হয়েছি, আমার সমস্যাটি সমাধান করে - তবে আমার কাছে সর্বদা এই বিলাসিতা থাকে না।
স্টিভ বেনেট

নীচে আমার উত্তরটি দুটি উপায়ের জন্য দেখুন আমি নেটকাট ছাড়াই এটি করতে সক্ষম হয়েছি।
মাউন্টেনএক্স

উত্তর:


13

নেটকাট ছাড়াই এসএসএইচ প্রক্সিকমন্ড

হোস্টগুলি কেবল অপ্রত্যক্ষভাবে অ্যাক্সেসযোগ্য থাকে তখন প্রক্সিকম্যান্ডটি খুব কার্যকর। নেটকাট দিয়ে এটি আপেক্ষিক স্ট্রেইট সামনের দিকে:

ProxyCommand ssh {gw} netcat -w 1 {host} 22

এখানে {gw} এবং {হোস্ট গেটওয়ে এবং হোস্টের স্থানধারক।

তবে গেটওয়েতে নেটক্যাট ইনস্টল করা না থাকলে এটিও সম্ভব:

ProxyCommand ssh {gw} 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'

/ Dev / tcp স্ট্যান্ডার্ড বাশের একটি অন্তর্নির্মিত বৈশিষ্ট্য। ফাইলগুলির অস্তিত্ব নেই। বাশের এই বৈশিষ্ট্যটি অন্তর্নির্মিত ব্যবহারের মধ্যে রয়েছে কিনা তা পরীক্ষা করতে:

cat < /dev/tcp/google.com/80 

গেটওয়ে ...

ব্যাশ ব্যবহৃত হয়েছে তা নিশ্চিত করতে, ব্যবহার করুন:

ProxyCommand ssh {gw} "/bin/bash -c 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'"

এবং এটি এমনকি কন্ট্রোলমাস্টারের সাথে একসাথে কাজ করে।

(ব্যাকগ্রাউন্ড বিড়াল পরিষ্কার করার জন্য কিলকে অন্তর্ভুক্ত করার জন্য 22 অক্টোবর আপডেট হয়েছে) (স্থানধারীদের আরও পরিষ্কার এবং ব্যাখ্যা / দেব / টিসিপি করার জন্য 3 মার্চ ২০১১ এ আপডেট করা হয়েছে)

100% রোল্যান্ড স্কুলগুলিতে ক্রেডিট। উত্সটি এখানে:
http://www.rschulz.eu/2008/09/ssh-proxycommand-without-netcat.html
মন্তব্যগুলিতে আরও দরকারী তথ্য দেখুন।

এছাড়া এখানে রয়েছে:
http://www.linuxjournal.com/content/tech-tip-tcpip-access-using-bash
http://securityreliks.securegossip.com/2010/08/enabling-devtcp-on-backtrack -4r1ubuntu /

আপডেট : এখানে মার্কো থেকে নতুন কিছু

One / .ssh / কনফিগারেশনে একটি প্রক্সিকম্যান্ডের উল্লেখে যেখানে এর মতো একটির লাইন থাকে:

ProxyCommand ssh gateway nc localhost %p

মার্কো বলেছেন:

আপনি ওপেনএসএইচএইচ-এর সাম্প্রতিক সংস্করণ ব্যবহার করলে আপনার নেটকাট লাগবে না। আপনি এনসি লোকালহোস্ট% পি -W লোকালহোস্টের সাথে প্রতিস্থাপন করতে পারেন:% পি।

ফলাফলটি দেখতে এই রকম হবে:

ProxyCommand ssh gateway -W localhost:%p

8

বড় টি, ছোট টি নয়।

-T' Disable pseudo-tty allocation.
-t' Force pseudo-tty allocation. 

আমার স্ক্রিপ্টটি সেই বার্তাটি ফিরে আসত এবং আর হয় না।

/usr/bin/ssh -T -q -i $HOME/.ssh/one_command other_system

authorized_keyকমান্ড চালানোর জন্য আমি অন্য_ সিস্টেমে এটি ব্যবহার করি :

from="my.mydomain.com",command="bin/remotely-run" ssh-rsa ... 

3

একবার চেষ্টা করে দেখুন:

ProxyCommand ssh -A -t gateway ssh -t steve@targetip

অপেক্ষা করুন, আমি যে চেষ্টা করেছি তার থেকে এটি কীভাবে আলাদা?
স্টিভ বেনেট

@ স্টেভেবেনেট পার্থক্যটি হ'ল এটি কেবল দ্বিতীয় সিস্টেমে টিটিওয়াই বরাদ্দ দেওয়ার চেষ্টা করে না তবে প্রথমটিতেও।
হাউক লেগেইন

এটি ঠিক একই আদেশটি আমি "মজাদার কিন্তু অসহায়" ফলাফলের সাথে উল্লেখ করেছি?
স্টিভ বেনেট

@ স্টিভবেনেট আমি সত্যিই এটি ভুলভাবে লিখেছি। আমার লক্ষ্য ছিল -tউভয় সংযোগ থাকা এবং আমি এটি ভুলতে দেখেছি। আমি আমার উত্তর সম্পাদনা করেছি।
লেগেছে

আহ। ভাল, এখনও ভাল না। সমস্ত সমন্বয় চেষ্টা।
স্টিভ বেনেট

-3

আপনি সার্ভার 2-এ শেশ করার পরে সার্ভার 2-এ শেশিংয়ের নিম্নলিখিত কৌশলটি চেষ্টা করতে পারেন।

$ ssh -t user1@server1 ssh -t user2@server2 

এটি করা আমার পক্ষে কাজ করে।


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