Ssh কমান্ড চলাকালীন PATH কীভাবে সেট করবেন?


18

ধরে নিচ্ছি ব্যবহারকারীর /bin/bashশেল ইন রয়েছে /etc/passwd। তারপরে ssh user@host commandব্যাশ ব্যবহার করে কমান্ডটি চালায়। যাইহোক, যে শেল তন্ন তন্ন লগইন না ইন্টারেক্টিভ, যার মানে হল নাতো ~/.bash_profileকিংবা ~/.bashrcsourced হয়। সেক্ষেত্রে PATHপরিবেশ পরিবর্তনশীল কীভাবে সেট করা যায় যাতে এক্সিকিউটেবলগুলি খুঁজে পাওয়া যায় এবং কার্যকর করা যায়? এটি দিয়ে প্রকৃত কমান্ডের উপসর্গের প্রস্তাব দেওয়া হয় source ~/.bashrc?


5
.bashrcউত্সযুক্ত, তবে এটি সম্ভবত শীর্ষে ইন্টারঅ্যাক্টিভিটি জন্য একটি পরীক্ষা আছে। এই চেকের আগে আপনি যে জিনিসগুলি রেখেছেন সেগুলি প্রয়োগ করা উচিত এবং যখন সার্ভার ব্যবহারকারীর পরিবেশ বা ব্যবহারের অনুমতি দেয় না তখন আমি PATH কে জোর করতে পারি ~/.pam_environment
মুরু

উত্তর:


18

আপনার কয়েকটি সম্ভাবনা রয়েছে:

  • সেট PATHমধ্যে সার্ভারে ~/.ssh/environment(চাহিদা দ্বারা সক্রিয় করা PermitUserEnvironment yesমধ্যে sshd_config)।
  • বাইনারি পুরো পথ ব্যবহার করুন
  • যেমনটি আপনি উল্লেখ করেছেন, ম্যানুয়ালি উত্স .bashrc: . ~/.bashrc(অথবা source) দিয়ে কমান্ডের উপসর্গ করুন

এটি বেশিরভাগ ব্যবহারের ক্ষেত্রে নির্ভর করে, আপনি কোন পথে যাবেন।


6
ম্যানুয়ালি সোর্সিং প্রয়োজনীয় ~/.bashrcনয়, এটি ডিফল্টরূপে ঘটে। সত্য, এটি আমার কাছে খারাপ ধারণা বলে মনে হচ্ছে।
sorontar

$PATHথেকে প্রসারিত হয় না ~/.ssh/environment, অন্তত না OpenSSH_7.9p1, OpenSSL 1.1.1b 26 Feb 2019
যাক্কো

1
@ যাক্কো এটি সম্ভবত sshd_config এ অক্ষম করা হয়েছে PermitUserEnvironment(সাম্প্রতিক সংস্করণগুলিতে ডিফল্ট)
জাকুজে

আমি এটি বের করেছিলাম, এটি প্রসারিত হচ্ছে না কারণ আমি একটি লাইন যুক্ত করেছি PATH="$PATH:/new/path"~/.ssh/environment যখন আমার হওয়া উচিত ছিল তখন আমার সাথেPATH=$PATH:/new/path
Jaakko

4

আপনি স্থানীয় সেটিংসকে দূরবর্তী সেটিংসের সাথে সমীকরণ করছেন ।

স্থানীয়ভাবে, একটি বাশ উদাহরণ, বর্তমান চলমান শেল যা আপনি লিখেছেন:

ssh user@host command

ক্লায়েন্ট ssh হিসাবে ssh (আরও কিছু নয়) কমান্ড কার্যকর করবে।
এটা করার জন্য স্থানীয় শেল প্রয়োজন না একটি উপ-শেল অথবা একটি নতুন শেল বা লগইন শুরু।

কমান্ডটি lsস্থানীয়ভাবে: কমান্ডটি কার্যকর করা হয়।

এটি ক্লায়েন্ট ssh কমান্ড যা দূরবর্তী সিস্টেমে একটি নেটওয়ার্ক সংযোগ খুলে দেয় , যেখানে সঠিকভাবে প্রমাণীকরণ করা হলে ssh এর আর্গুমেন্ট হিসাবে লেখা কমান্ডটি কার্যকর করতে একটি নতুন শেল শুরু করা হবে, অথবা, যদি কোনও যুক্তি না দেওয়া হয়, তবে আরও কমান্ডের প্রত্যাশা করুন যে সংযোগে।

এই নতুন রিমোট শেলটি অগত্যা লগইন শেল হবে কারণ লগইন করার জন্য দূরবর্তী ব্যবহারকারীর (সেই সিস্টেমে) প্রমাণীকরণ হওয়া দরকার। অথবা, যদি কিছু নির্দিষ্ট কমান্ড দেওয়া হয়, কেবল প্রমানিত ব্যবহারকারী সুবিধাসহ এই জাতীয় কমান্ডটি চালান।

$file sourcedপ্রতিটি ফাইলের শুরুতে ( রিমোট সিস্টেমে) যোগ করার মাধ্যমে ( /etc/ফাইলগুলি পরিবর্তনের জন্য মূল প্রয়োজন) কোন ফাইলগুলি উত্সাহিত তা দেখতে পেতেন :

$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done

এবং তারপরে একটি ssh কনসোল শুরু করুন:

$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read

এই ক্ষেত্রে, উভয় bashrcফাইলই পড়া হয়েছিল কারণ প্রতিটি profileফাইলের সেগুলি অন্তর্ভুক্ত করার জন্য আদেশ ছিল, লগইন শেলটি সরাসরি তাদের উত্সাহিত করার কারণে নয়।

$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read

এই ব্যবস্থায়, যেখানে bashrcউভয় ক্ষেত্রেই পড়া হয়।

source ~/.bashrcকার্যকর করতে কমান্ডটিতে একটি যুক্ত করার দরকার নেই ।

পথ পরিবর্তন করুন

"In PATH" পরিবর্তন করার জন্য আপনাকে যা যা করতে হবে তা হ'ল /etc/bash.bashrcএই সিস্টেমে শেল শুরু করা সমস্ত ব্যবহারকারীদের জন্য। অথবা ~/.bashrcপ্রতিটি ব্যবহারকারীর জন্য এটি প্রয়োজন। আপনি কোনও ব্যবহারকারীর একটি কঙ্কাল (বা সম্পাদনা) যুক্ত করতে .bashrcপারেন/etc/skel/কোনও নতুন ব্যবহারকারী তৈরি জন্য সঠিক ফাইল পাওয়া যায়।

উপরেরটি কেবল বাশের জন্য বৈধ। আপনার যদি সমস্ত শেলের জন্য কাজ করার জন্য সেটিংসের প্রয়োজন হয় তবে সম্ভবত ~/.ssh/environmentপ্রতিটি ব্যবহারকারীর জন্য এসএসএস ফাইল ব্যবহার করে পরিবেশ পরিবর্তনশীল PATH সেট করা প্রয়োজন। অথবা /etc/ssh/sshrcযে সিস্টেমে ssh সার্ভার চলছে সে ক্ষেত্রে বিশ্বব্যাপী সেটিং ব্যবহার করুন (দয়া করে man sshdকিছু অতিরিক্ত বিবরণের জন্য ফাইল বিভাগটি পড়ুন )।

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