প্রশ্ন ssh এজেন্ট ফরওয়ার্ডিং এবং অন্য ব্যবহারকারীর sudo


যদি আমার একটি সার্ভার একটি থাকে যার মধ্যে আমি আমার ssh কী দিয়ে লগইন করতে পারি এবং আমার "sudo su-otheruser" এর ক্ষমতা আছে, আমি কী ফরওয়ার্ডিং হারাতে পারি কারণ env ভেরিয়েবলগুলি সরানো হয় এবং সকেট আমার আসল ব্যবহারকারী দ্বারা শুধুমাত্র পঠনযোগ্য। "Sudo su - otheruser" এর মাধ্যমে কী ফরওয়ার্ডিংটি সেতু করতে পারে এমন একটি উপায় আছে, তাই আমি আমার ফরোয়ার্ড কী (আমার ক্ষেত্রে গিট ক্লোন এবং rsync) সহ সার্ভার B তে স্টাফ করতে পারি?

অন্য ব্যবহারকারীর অনুমোদিত_keys এবং "ssh অন্যান্য ব্যবহারকারী @ localhost" তে আমার কী কী যুক্ত করা যায় সে সম্পর্কে আমি ভাবতে পারি, তবে আমার কাছে থাকা প্রতিটি ব্যবহারকারী এবং সার্ভারের সমন্বয়ের জন্য এটি করা খুব কষ্টকর।

সংক্ষেপে:

$ sudo -HE ssh user@host
(success)
$ sudo -HE -u otheruser ssh user@host
Permission denied (publickey). 

144
2018-01-28 13:52


উত্স




উত্তর:


আপনি উল্লিখিত হিসাবে, পরিবেশ ভেরিয়েবল দ্বারা মুছে ফেলা হয় sudo, নিরাপত্তার কারণে.

কিন্তু ভাগ্যক্রমে sudo বেশ কনফিগারযোগ্য: আপনি ধন্যবাদ রাখতে পারেন, যা আপনি পরিবেশগত ভেরিয়েবল ধন্যবাদ রাখতে পারেন env_keep কনফিগারেশন অপশন /etc/sudoers

এজেন্ট ফরওয়ার্ডিং জন্য, আপনি রাখা প্রয়োজন SSH_AUTH_SOCK পরিবেশ সূচক. এটি করার জন্য, কেবল আপনার সম্পাদনা করুন /etc/sudoers কনফিগারেশন ফাইল (সবসময় ব্যবহার visudo) এবং সেট env_keep উপযুক্ত ব্যবহারকারীদের বিকল্প। যদি আপনি এই বিকল্পটি সকল ব্যবহারকারীদের জন্য সেট করতে চান, তবে ব্যবহার করুন Defaults এই মত লাইন:

Defaults    env_keep+=SSH_AUTH_SOCK

man sudoers বিস্তারিত জানার জন্য.

আপনি এখন এই মত কিছু করতে সক্ষম হওয়া উচিত (দেওয়া user1এর পাবলিক চা উপস্থিত হয় ~/.ssh/authorized_keys মধ্যে user1@serverA এবং user2@serverB, এবং serverAএর /etc/sudoers উপরে নির্দেশিত হিসাবে ফাইল সেটআপ করা হয়):

user1@mymachine> eval `ssh-agent`  # starts ssh-agent
user1@mymachine> ssh-add           # add user1's key to agent (requires pwd)
user1@mymachine> ssh -A serverA    # no pwd required + agent forwarding activated
user1@serverA> sudo su - user2     # sudo keeps agent forwarding active :-)
user2@serverA> ssh serverB         # goto user2@serverB w/o typing pwd again...
user2@serverB>                     # ...because forwarding still works

168
2018-03-03 21:24



এই সঠিক উত্তর, চিহ্নিত করা উচিত। - Xealot
এই কেবল কাজ, যদি user2 উপরে root! তা না হলে, user2 SSH_AUTH_SOCK সঠিকভাবে সেট আপ হবে, কিন্তু user2 অ্যাক্সেস করতে পারবেন না। / Tmp / 'SSH-GjglIJ9337 /। root যে এক্সেস আছে। সুতরাং সমস্যাটির সমাধান হতে পারে, কিন্তু OPs নয়: "এবং সকেট আমার আসল ব্যবহারকারী দ্বারা শুধুমাত্র পঠনযোগ্য " - Peter V. Mørch
Defaults>root env_keep+=SSH_AUTH_SOCK Sudoing যখন এটি শুধুমাত্র এগিয়ে নিশ্চিত করা উচিত থেকে রুট। আপনি নিরাপত্তার কারণে অন্যান্য ব্যবহারকারীদের যেভাবে যেভাবে করতে চান না। অন্যের জন্য আলাদা এসএসসি এজেন্ট চালান, এবং উপযুক্ত কী যুক্ত করুন। - Paul Schyska
sudo su - আমার জন্য কাজ করে না, সম্ভবত এটি পরিবেশ সংরক্ষণ করতে পারে না কারণ এটি নয় sudo শেল প্রারম্ভকালে সময়। sudo su কাজ মনে হচ্ছে। - Alex Fortuna
আমি মানুষ কেন ব্যবহার বুঝতে না sudo su যাহাই হউক না কেন। যদি আপনি একটি রুট শেল প্রয়োজন, যে কি sudo -s অথবা sudo -i জন্য. - eaj


sudo -E -s
  • -ই পরিবেশ রক্ষা করবে
  • -স একটি কমান্ড চালায়, শেলের জন্য ডিফল্ট হয়

এটি আপনাকে মূল কীগুলি লোড করে একটি রুট শেল দেবে।


55
2018-01-01 15:31



উপরে মন্তব্য সহ, আপনি যদি রুট হয়ে উঠেন তবে এটি কেবলমাত্র প্রশ্নটি ঠিক করে, কারণ সেই ক্ষেত্রে রুটটি $ SSH_AUTH_SOCK এ স্বাভাবিক অ্যাক্সেসের অনুমতিগুলি পেতে পারে। - doshea


অনুমতি দিন otheruser অ্যাক্সেস করতে $SSH_AUTH_SOCK ফাইল এবং এটির ডিরেক্টরি, উদাহরণস্বরূপ সঠিক ACL, তাদের স্যুইচ করার আগে। উদাহরণ অনুমান Defaults:user env_keep += SSH_AUTH_SOCK মধ্যে /etc/sudoers হোস্ট মেশিনে:

$ ssh -A user@host
user@host$ setfacl -m otheruser:x   $(dirname "$SSH_AUTH_SOCK")
user@host$ setfacl -m otheruser:rwx "$SSH_AUTH_SOCK"
user@host$ sudo su - otheruser
otheruser@host$ ssh server
otheruser@server$

আরো নিরাপদ এবং পাশাপাশি অ রুট ব্যবহারকারীদের জন্য কাজ করে ;-)


33
2017-11-15 10:58



এই পদ্ধতি ব্যবহার করার সময় মনে রাখবেন, অন্যান্য মানুষ হিসাবে লগ ইন otheruser আপনার এসএসসি প্রমাণীকরণ ব্যবহার করতে পারেন। - gitaarik
এটি আমার জন্য কাজ করে, তবে আমাকে "সুডো সু - অন্যান্য ব্যবহারকারী" থেকে "সুডো সু ইউসারাস" পরিবর্তন করতে হবে (- অপসারণ করা)। - Charles Finkel
কেন rwx এবং না rw (অথবা r সব সময়ে)? - anatoly techtonik
@ এন্টোলাইটেক্টনিক থেকে man 7 unix - সকেটে সংযোগকারী লিনাক্সে সেই সকেটে পঠন এবং লেখার অনুমতি প্রয়োজন। এছাড়াও আপনি অনুসন্ধানের (চালানোর) প্রয়োজন এবং ডিরেক্টরির মধ্যে সকেট তৈরি করুন বা কেবলমাত্র অনুসন্ধান (চালানো) অনুমতি দিন যখন আপনি এই সকেটে সংযুক্ত হন। তাই উপরের উত্তরের মধ্যে সকেটের অনুমতি নিষ্ক্রিয় করা হয়। - mixel


আমি এই কাজ করে যে পাওয়া গেছে।

sudo su -l -c "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK; bash"

অন্যরা যেমন উল্লেখ করেছে, এটি যদি ব্যবহারকারীর কাছে স্যুইচ করা হয় তবে এটি $ SSH_AUTH_SOCK (যাটি রুট ছাড়াও বেশিরভাগ ব্যবহারকারীর কাছে বেশিরভাগ ব্যবহারকারীর কাছে পঠনযোগ্য অনুমতি নয়) পড়তে অনুমতি দেয় না। আপনি $ SSH_AUTH_SOCK এবং 777 অনুমতিতে থাকা ডিরেক্টরিরটি সেট করে এটির কাছাকাছি পেতে পারেন।

chmod 777 -R `dirname $SSH_AUTH_SOCK`
sudo su otheruser -l -c "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK; bash"

এই যদিও বেশ ঝুঁকিপূর্ণ। আপনি মূলত আপনার এসএসএইচ এজেন্ট (আপনি লগ আউট না হওয়া পর্যন্ত) ব্যবহার করার জন্য সিস্টেম অনুমতিতে অন্য সকল ব্যবহারকারীকে প্রদান করছেন। আপনি গ্রুপটি সেট করতে এবং 770 এ অনুমতিগুলি পরিবর্তন করতে সক্ষম হতে পারেন, যা আরো নিরাপদ হতে পারে। যাইহোক, আমি গ্রুপ পরিবর্তন করার চেষ্টা করেছি, আমি "অপারেশন অনুমতি দেওয়া হয়নি" পেয়েছিলাম।


16
2018-03-21 00:01



এটি অত্যন্ত ঝুঁকিপূর্ণ। আপনার এসএসএইচ এজেন্ট ব্যবহার করার জন্য অন্য সকল ব্যবহারকারীর অনুমতি প্রদান করা আপনার সমস্ত শংসাপত্র প্রদানের সমান (এবং আপনি যদি কখনও সুডো বা su ব্যবহার করেন তবে সিস্টেমের অন্যান্য ব্যবহারকারীদের পাশাপাশি অন্যান্য সমস্ত সিস্টেমে রুট পাওয়ার প্রদান করুন!) । এই কখনও কখনও করা উচিত! - Matija Nalis
আমি এই বক্তব্যের সাথে একমত নই যে "এটা কখনোই শেষ হবে না!" এই ঝুঁকি গ্রহণযোগ্য যেখানে অনেক ক্ষেত্রে আছে। উদাহরণস্বরূপ, একটি ছোট দল যেখানে প্রত্যেকের একই অনুমতি রয়েছে এবং আপনি অন্যান্য সমস্ত ব্যবহারকারীদের উপর বিশ্বাস করেন। এটি জড়িত ঝুঁকি বোঝা ছাড়া করা উচিত নয়। কিন্তু একবার যারা ঝুঁকি বোঝা যায়, ঝুঁকি গ্রহণযোগ্য এমন সময় আছে। - phylae


আপনি যদি অনুমোদিত হয় sudo su - $USER, তারপর আপনি সম্ভবত একটি করার অনুমতি হচ্ছে একটি ভাল যুক্তি আছে ssh -AY $USER@localhost পরিবর্তে, আপনার বৈধ পাবলিক কী $ USER এর হোম ডিরেক্টরিতে। তারপর আপনার প্রমাণীকরণ ফরওয়ার্ডিং আপনার সাথে বহন করা হবে।


6
2018-01-28 14:08



তিনি তার প্রশ্নের নীচে বলেন, এবং বলেন যে এটা করা কঠিন হবে। - Fahad Sadah
এটি সম্ভবত সর্বোত্তম সমাধান তবে $ USER যদি একজন প্রকৃত ব্যক্তি (টিএম) হয় তবে এটি লোমশ পায় - তারা অনুমোদিত_keys থেকে SA এর কী মুছে ফেলতে পারে বা তাদের পাসওয়ার্ড পরিবর্তন করতে পারে ... - voretaq7
আপনি author_keys এ তাদের লেখার অ্যাক্সেসটি সরাতে পারেন (যদিও তারা সত্যিই ফ্লোরিয়ান অ্যাক্সেস অস্বীকার করতে সেট থাকে তবে তারা এটি মুছে ফেলতে এবং পুনঃনির্মাণ করতে পারে, এটি তাদের নিজস্ব কোনও ডিরেক্টরিতে থাকে) - Fahad Sadah


আপনি সবসময় sudo ব্যবহার করার পরিবর্তে এজেন্ট ফরওয়ার্ডিংয়ের সাথে localhost এ ssh করতে পারেন:

ssh -A otheruser@localhost

অসুবিধা হল যে আপনাকে আবার লগ ইন করতে হবে, কিন্তু যদি আপনি এটি স্ক্রীন / টিমক্স ট্যাবটিতে ব্যবহার করেন তবে এটি শুধুমাত্র একবারের প্রচেষ্টায়, তবে, যদি আপনি সার্ভার থেকে সংযোগ বিচ্ছিন্ন করেন, তবে সকেট আবার (অবশ্যই) ভাঙবে । সুতরাং আপনি যদি আপনার পর্দা / tmux অধিবেশনটি সর্বদা খোলা রাখতে না পারেন তবে এটি আদর্শ নয় (তবে আপনি নিজে নিজে আপডেট করতে পারেন SSH_AUTH_SOCKenv var আপনি যদি শান্ত হন)।

এছাড়াও উল্লেখ্য যে ssh ফরওয়ার্ডিং ব্যবহার করার সময়, root সর্বদা আপনার সকেট অ্যাক্সেস করতে এবং আপনার ssh প্রমাণীকরণ ব্যবহার করতে পারে (যতদিন আপনি ssh ফরওয়ার্ডিংয়ের সাথে লগ ইন করেছেন)। সুতরাং আপনি রুট বিশ্বাস করতে পারেন তা নিশ্চিত করুন।


4
2017-11-27 14:56





ব্যবহার করবেন না sudo su - USER, বরং sudo -i -u USER। আমার জন্য কাজ কর!


3
2018-01-28 16:51



সুডোর কি সংস্করণ আছে? খনি (1.6.7p5, CentOS 4.8) এর ম্যান পৃষ্ঠাতে -i নেই। - David Mackintosh
Sudo version 1.6.9p17 ডেবিয়ান লেনি উপর চলমান। চেষ্টা sudo -s? - Fahad Sadah
আমার জন্য কাজ করে না।
উবুন্টুতে, সুডো 1.8.9 পি 5 ব্যবহার করে, না sudo -s না sudo -i আমার জন্য কাজ কর - Jon L.


অন্যান্য উত্তর থেকে তথ্য একত্রিত আমি এই সঙ্গে এসেছিলেন:

user=app
setfacl -m $user:x $(dirname "$SSH_AUTH_SOCK")
setfacl -m $user:rwx "$SSH_AUTH_SOCK"
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" -u $user -i

আমি এই পছন্দ কারণ আমি সম্পাদনা করার প্রয়োজন নেই sudoers ফাইল।

উবুন্টু 14.04 এ পরীক্ষা করা হয়েছে acl প্যাকেজ)।


2
2018-06-10 17:39