লগইন শেলটিতে ssh + sudo + su


11

আমার বেশিরভাগ মেশিন নিয়মিতভাবে প্রবেশ করেছি কেবলমাত্র sudo suআমার বাকী অংশটি বিশেষ উদ্দেশ্যে ব্যবহারকারীর হিসাবে লগ ইন করা ব্যয় করার জন্য regularly সাধারণ কর্মপ্রবাহটি হ'ল:

mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff

আমি এটিকে একটি লাইনারে সিদ্ধ করতে চাই যা আমি ওরফে করতে পারি, তাই আমি প্রতিটি মেশিনের জন্য কেবল একটি উলাম সেট করতে পারি এবং যেখানে sudo su - specialuserবয়লারপ্লেট টাইপ না করেই আমার একক কমান্ডে থাকতে হবে সেখানে পৌঁছাতে পারি। আমি লগইন করতে পারে সেট আপ me@othermachineকরতে পারে sudo su, কিন্তু meআমি প্রয়োজন হিসাবে চালানোর জন্য নমনীয়তা রাখতে চাই ।

( দ্রষ্টব্য: আমার কোনও নিয়ন্ত্রণ নেই othermachineবা এটি কীভাবে সেট আপ করা হয়েছে; এটি একটি প্রতিষ্ঠিত কর্মপ্রবাহ যা আমি যখন নিয়োগ পেয়েছিলাম তখন in

আমার প্রথম চিন্তা ছিল ন্যায়বিচার

ssh me@othermachine "sudo su - specialuser"

এবং এই ধরণের কাজগুলি, তবে এটি আমার কোনও প্রম্পট পায় না, ^Cএটি মেরে এবং আমাকে লগ আউট করে দেয় এবং আমি ধরে নিয়েছি যে অন্যান্য বিভিন্ন জিনিস সম্ভবত ভুল are

ফুল লগইন শেল দিয়ে রিমোট ssh কমান্ড পড়ার পরে আমি আরও কয়েকটি বিদেশী জিনিস চেষ্টা করেছি

ssh me@othermachine 'bash -l -c "sudo su - specialuser"'

এবং

ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'

- যার মধ্যেও আমি কাজ করার প্রত্যাশা করছিলাম, এবং তারা তা করেনি, তবে আমি ভেবেছিলাম আমার সম্পূর্ণতার জন্য তাদের চেষ্টা করা উচিত (এবং কাছাকাছি-সদৃশ এড়াতে); তারা একই প্রম্পট-কম শেল উত্পাদন করে (দ্বিতীয়টির জন্য একটি যুক্ত বোনাস প্রম্পট-কম শেলটি একটির জন্য -র meপরে exitনেওয়ার জন্য specialuser)। এবং আমি চেষ্টা করেছিলাম

ssh me@othermachine "sudo su - specialuser -c bash -l"

তবে এটি আমাকে পেয়েছে

sudo: no tty present and no askpass program specified

আরও ভাল ধারণা?


~/.profileএকটি স্বল্প বিলম্বের পরে sudo কমান্ড যোগ করার বিষয়ে ?
অ্যালেক্স

ধারণাটি হচ্ছে যে এই বিজোড় ক্ষেত্রে আমি চাই না যে sudoআমি আঘাত করব ^C? আমি যদি আরও ভাল কিছু নিয়ে আসতে না পারি তবে আমি চেষ্টা করে দেখতে পারি।
ডেভিড মোলস 6'15

1
আপনি su meথেকে পারে specialuser। অথবা .profileঅথবা .bashrc, আপনি অনুসরণ করো না যদি sudoসঙ্গে exit, আপনার প্রথম exitতুমি ফিরে নিতে হবে me, একটি দ্বিতীয় সঙ্গে সেশন শেষ করতে। বা এমনকি একটি পতাকা ফাইল, তাই ব্যবহার sudoদ্বারা পূর্বে হয় [ -f ~/.keep.me ] && del ~/.keep.meএবং অনুসরণ [ \! -f ~/.keep.me ] && exit: আপনি তারপর একটি কমান্ড শুধুমাত্র একটি স্ক্রিপ্ট বা ওরফে প্রয়োজন meহিসাবে :>~/.keep.me; exit। এখন exitআপনার সেশনটি শেষ করবে এবং meআপনার লগইন সেশনে ফিরে যাবে।
এএফএইচ

1
আপনার চূড়ান্ত সংস্করণে লিখতে বিবেচনা করুন /bin/bashএবং bashসুরক্ষার কারণে ( ট্রোজান এড়াতে ) কোনও সহজ নয় not বিশেষত যদি এর sudoআগে থাকে ...
হস্তুর

উত্তর:


11

এই লাইনটি আপনার পক্ষে কাজ করা উচিত

ssh -t me@machine "sudo su - specialuser" 

এই সমাধানটি আমাকে একটি প্রম্পট দেয় বা -tসুইচের উপর নির্ভর করে না

ssh -t me@machine "/bin/bash -l"   # Give me a prompt

ssh  me@machine "/bin/bash -l"     # Give me NO prompt
ssh  me@machine                    # Give me NO prompt

থেকে নোটস man ssh

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


এটি আমার পক্ষে কাজ করে ... এটি কি হোস্ট নির্দিষ্ট ~ / .ssh / কনফিগারেশন সেটিংসের মাধ্যমেও করা যায়?
আরে

1
@ যেখানে, হ্যাঁ আপনি এটি RequestTTY force(যা সমান -t) এর সাথে করতে পারেন RemoteCommand sudo su - specialuser! তবে, সচেতন হন যে অন্যান্য প্রোগ্রামগুলি যে এসএসএইচ ব্যবহার করে (যেমন স্কিপ, আরএসএনসি, ইত্যাদি) আর এই হোস্টের জন্য সঠিকভাবে কাজ করবে না।
রবার্ট রিডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.