Bash_profile বা bashrc না চালিয়ে লগইন করুন


75

সুতরাং আসুন আমরা তাদের মধ্যে একটি টাইপ করা কিছু বলি .bashrcযা তাকে (বা তার) মাধ্যমে লগ ইন করতে বাধা দেয় ssh(অর্থাত্ ssh লগইন ফাইলটিতে ত্রুটির কারণে প্রস্থান করে)। কোনও উপায় আছে যে ব্যক্তি এটি সম্পাদন না করে লগইন করতে পারে (বা .bashrcযেহেতু একজন অন্য চালাচ্ছে), বা অন্যথায় ফাইলটি মুছে ফেলা / নামকরণ / অকার্যকর করবে?

ধরা যাক আপনার মেশিনে শারীরিক অ্যাক্সেস নেই, এবং এটিই কেবলমাত্র একাউন্টে প্রবেশ করার ক্ষমতা সহ।

রেফারেন্সের জন্য: .bash_profileঅন্তর্ভুক্ত .bashrc:

[[ -f ~/.bashrc ]] && . ~/.bashrc

সম্পাদনা করুন: আমি যে জিনিসগুলি চেষ্টা করেছি:

ssh user@host "rm ~/.bashrc"

scp nothing user@host:/RAID/home/tom/.bashrc

ssh user@host  "/bin/bash --norc"

সবাই ত্রুটি দেয়:

/RAID/home/tom/.bashrc: line 16: /usr/local/bin/file: No such file or directory
/RAID/home/tom/.bashrc: line 16: exec: /usr/local/bin/file: cannot execute: No such file or directory

4
আপনার scp কমান্ড কাজ করবে না কারণ সংযোগ করার সময় scp .bashrc পড়বে। ভবিষ্যতে সমস্যা এড়ানোর জন্য, আপনি [ -z "$PS1" ] && return./Bashrc এর শুরুতে কিছু যুক্ত করতে পারেন । এই ভাবে scp প্রথম লাইনের পরে .bashrc পার্স করা বন্ধ করবে এবং জরুরী অবস্থার ক্ষেত্রে আপনি এটি ওভাররাইট করতে সক্ষম হবেন।
দালোলিওম

উত্তর:


24

আমি মনে করি আপনার একমাত্র বিকল্পগুলি হ'ল:

  • অন্য ব্যবহারকারী হিসাবে এসএসএস করুন এবং আপনার অ্যাকাউন্টে su;

  • যদি ftp বা smbclient এর মতো কিছু ব্যবহার করুন, যদি প্রাসঙ্গিক পরিষেবাগুলি হোস্টে সক্ষম করা থাকে;

  • একটি মুক্ত নেটওয়ার্ক পরিষেবাতে একটি মুক্ত দুর্বলতা খুঁজে নিন এবং এটি শোষণ করুন :)।

  • সমস্যা সমাধানের জন্য প্রশাসক পান।


4
"ধরুন আপনার মেশিনে শারীরিক অ্যাক্সেস নেই, এবং এটিই কেবলমাত্র একাউন্টে প্রবেশ করার ক্ষমতা সহ।"
ডেনিস উইলিয়ামসন

আমি এই পথে নামছি। সমাধানটি খুঁজে পাওয়ার পরে পোস্ট করব। ভাগ্যক্রমে, আমি আক্রমণ করার কয়েকটি উপায় পেয়েছি।
টম রিটার 21

1
আমার সার্ভারে এসফটিপিতে ফাইলজিলা ব্যবহার করেছে এবং এটি আমাকে স্থির করেছে। অনেক ধন্যবাদ, আপনি আমাকে বাঁচালেন। আমার .বাশ_প্রফাইলে দুর্ঘটনাক্রমে আমার "প্রস্থান 1" শর্ত ছিল এবং এটি আমাকে ঘৃণা করেছিল।
jangofan

117

ssh -t username@hostname /bin/sh আমার জন্য কাজ কর.


এটি ভাল - সাধারণভাবে কাজ করে এবং একটি শেল সরবরাহ করে যা আপনি সমস্যার সমাধান করতে পারেন।
এমটি

1
গুগল ক্রোমে সিকিউর শেল অ্যাপ্লিকেশনটির সাথে এটি করার চেষ্টা করা হচ্ছে ( chrome.google.com/webstore/detail/secure-shell/… ) তবে কীভাবে / কোথায় কমান্ড লাইন আর্গুমেন্ট রাখা উচিত তা বুঝতে পারছি না। কোন টিপস?
বেনজ

2
এটি আমার পক্ষে কাজ করে না (যদিও এটি ম্যান পৃষ্ঠা অনুসারে হওয়া উচিত)। স্থানীয় হোস্ট উবুন্টু 14.04.1 চালায় এবং এটি দূরবর্তী হোস্টে উবুন্টু 12.04.5। আমি আরএসআইএনসি করতে অক্ষম কারণ আমার লগইন শেলটি টিসিএস এবং রিমোট হোস্টে এটি আবর্জনা মুদ্রণ করে (tcsh: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই tcsh: "/ u / levy" থেকে শুরু করার চেষ্টা করছি - যা আমাকে বলা হয়েছে কারণ ডিরেক্টরি এনএসএফ মাউন্ট করা হয়)। আমি ভেবেছিলাম আমি লগইন শেলকে বাইপাস করে সমস্যার সমাধান করব তবে এটি কার্যকর হয় না।
সিলভিও লেভি

2
যদি আপনার ডিফল্ট শেলটি csh / tcsh হয় তবে এটি সর্বদা আপনার .cshrc/ .tcshrcএমনকি অ-ইন্টারেক্টিভ শেলের জন্য উত্স তৈরি করে ।
ব্রায়ান ভ্যান্ডেনবার্গ

আমি এখানে বসে আমার পাছাটি আমার নিজের বোকামির কাছে হাসতে হাসতে এই জায়গায় পৌঁছে যাচ্ছি। আপনার সমাধান দুর্দান্ত কাজ করেছে। এই
টিঙ্কারকে

36

আমারও একই সমস্যা ছিল এবং এটি কোনওভাবে সমাধান করতে সক্ষম হয়েছিল। আমি সিস্টেমটি অ্যাক্সেস করতে ssh ব্যবহার করেছি এবং সিস্টেমে লগ ইন করার সাথে সাথে Ctrl + c টিপে এবং ধরে রেখেছি। তারপরে, ~ / .bashrc পড়েনি, এবং আমি এটি সংশোধন করতে সক্ষম হয়েছি।


11
আমি সংশয়ী ছিলাম, তবে এটি আসলে কাজ করে ...
rmobis

এই প্রতিভা!
ব্যবহারকারী1747134

আসলে কাজ করে ... ধন্যবাদ! অন্যান্য পদ্ধতিগুলি কখনই আমার পক্ষে কাজ করে নি।
জাজাচ ...

শুধুমাত্র একটি
.বাশ_প্রফাইলে

ওএমজি, আমি ভেবেছিলাম আমি পুরো ইন্টারনেটটি অনুসন্ধান করেছি, তারপরে আমি এটি চেষ্টা করার সিদ্ধান্ত নিয়েছি এবং এটিই আমার পক্ষে কাজ করে! ধন্যবাদ!
Jiahao Cai

21

আমি ইনস্টল করা একটি নেটওয়ার্ক মনিটরিং সফ্টওয়্যারটিতে ওয়েব ইন্টারফেসের মাধ্যমে কমান্ডটি রুট হিসাবে কার্যকর করতে আমি একটি প্রকাশিত সিভিই ব্যবহার করেছি। rm /RAID/home/tom/.bashrc

তারপরে আমি লগইন করতে পারি এবং আমার করা পরিবর্তনগুলি এসএনএন ফিরিয়ে দিতে পারি।


11
এটি একই সাথে দুর্দান্ত এবং ব্যর্থ উভয়ই।
মাইকিবি

1
@ টমরিটার: দয়া করে এটি সরবরাহ করুন।
ব্যবহারকারী 2284570

1
এটি ক্যাকটির একটি আউন্ডল সংস্করণে ছিল, সুতরাং আপনি যদি 8-বছরের পুরানো সফ্টওয়্যার না চালান তবে আমি মনে করি না এটি আপনাকে সাহায্য করবে। এবং আপনি যদি 8 বছরের পুরানো সফ্টওয়্যারটি চালাচ্ছেন তবে আমি আপনাকে সহায়তা করতে পারি না। ;)
টম রিটার

15

আপনি ক) শুরু করতে ব্যাশ ছাড়া source'ing পারেন ~/.bashrcবা ~/.bash_profileএবং খ) এই ধরনের একটি শেল একটি পূর্ণ লগ-ইন শেল হবে না কারণ কোনো আছে / TTY সংযুক্ত, বল SSH একটি সংযুক্ত করতে TTY :

ssh -t user@host bash --norc --noprofile

3
এটি কাজ করে, তবে মনে রাখবেন যে আপনার সাধারণ প্রম্পট হবে না, কেবল একটি খালি স্ক্রিন। lsনিজেকে :) এ নিশ্চিত করতে একটি চেষ্টা করে দেখুন । এছাড়াও নোট করুন এটি একটি dumbশব্দ ব্যবহার করবে , সুতরাং আমার জন্য ন্যানো কাজ করে না
Ciprian Tomoiagă

7

তুমি ভাগ্যের বাইরে

সমস্ত ssh কমান্ড আপনার লগইন শেল চালায়। ssh $COMMANDরান $SHELL -c $COMMAND, scpরান $SHELL -c /path/to/sftp-server, প্লেইন sshআপনার শেল চালায়।


3
এটি এসএফটিপি-র ক্ষেত্রেও সত্য - এমনকি এসএসএইচ সাব-সিস্টেমগুলি স্পষ্টতই শেলের মধ্যে থেকে কার্যকর হয়।
lxgr

আমার অভিজ্ঞতায় আপনি সঠিক, যদিও ssh ম্যান পৃষ্ঠাতে "যদি কমান্ড নির্দিষ্ট করা থাকে তবে এটি লগইন শেলের পরিবর্তে দূরবর্তী হোস্টে সম্পাদন করা হয়।" তবুও পোস্টারটি সর্বাধিক রেটযুক্ত উত্তর (এসএসএস হোস্টনাম / বিন / শ) ব্যবহার করে সমস্যার সমাধান করতে সক্ষম হয়েছিল। কি দেয়?
সিলভিও লেভি

@ সিলভিও, ওপির উত্তর হ'ল তিনি এসএসএইচ সম্পর্কিত নয় এমন একটি শোষণ ব্যবহার করেছিলেন।
টুবু

ঠিক। কেউ সর্বাধিক রেট প্রাপ্ত উত্তর দিয়ে সাফল্যের কথা জানিয়েছে এবং আমি তাড়াতাড়ি ধরে নিয়েছি যে এটিই ওপি। আমি আশা করি এটি কার্যকর হয়েছে - আমারও একই অবস্থা রয়েছে, যদিও এটি কেবল পঙ্গু নয়। (উপরের সর্বাধিক রেট প্রাপ্ত উত্তরের নিচে আমার মন্তব্য দেখুন))
সিলভিও লেভি

6

উপরের উত্তরগুলির মধ্যে এসএসএস-এর লগইন শেলকে বাইপাস করতে পারবেন না। আপনি একটি পূর্ণ কমান্ড লাইনটি পাস করতে পারেন, এবং সুতরাং এটি কমান্ডটি প্রসেস করতে এবং কমান্ডের জন্য কাজের পরিবেশ নির্ধারণ করতে দূরবর্তী শেলটি চালায়। শেলগুলি এটির জন্য এবং এটি ইউনিক্সের উপায়। আপনি যদি শেল ছাড়াই কিছু চালানোর চেষ্টা করেন তবে আপনার সমস্ত ধরণের সামঞ্জস্যের সমস্যা হবে। তেমনি, একটি নিয়ন্ত্রণ-সি চেষ্টা করার জন্য কলিং প্রস্থান হিসাবে একই কাজ করা উচিত যা আপনি এড়াতে চেষ্টা করছেন এমন আচরণ। বাশ যদি এটি চালিয়ে যায় তবে এটি একটি বাগ। লোকেরা কেন এই কথা বলে রাখে যে ম্যান পেজটি এটিকে উদ্ধৃত করার জন্য আলাদা কিছু প্রয়োজন বলেছে কারণ এটি আমার ম্যান পৃষ্ঠায় সাজানোর কিছুই বলে না।

অধিকন্তু, বেশিরভাগ লিনাক্স সিস্টেমে নির্দিষ্ট করে / বিন / শ কিছুই বোঝায় না যেহেতু এটি ব্যাশ করার জন্য কেবল একটি সিমলিংক!

চান টেস্ট? আপনার কাছে "প্রতিধ্বনি" বিবৃতি যুক্ত করুন .Bashrc এবং। প্রোফাইল এবং দেখুন যা চালানো হয়। আমি করেছিলাম. ফলাফল এখানে।

ssh user@hostকার্যকর করা ssh user@host /bin/bashহবে .বাশ_প্রোফাইল .bashrc কার্যকর করবে, তবে এটি এর অ-ইন্টারেক্টিভ (কোনও প্রম্পট নয়)। ssh -t user@host /bin/bash.bashrc দু'বার কার্যকর করে ... একবার লগইনে একবার, পাস হওয়া কমান্ডের জন্য, সুতরাং কোনও শেল নির্দিষ্ট করে সর্বদা প্রথমটি চালিত হবে। ssh -T user@host-T বা -t মোটেও নির্দিষ্ট না করার মতোই।

এখন, আপনি যদি লক্ষ্য করেন, আমার সিস্টেমটি কেবল একটি বা অন্য দুটি ফাইলই চালাচ্ছে না। তবে মূল পোস্টারটিতে .বাশ_প্রফাইলে চলমান .Bashrc এ একটি লাইন রয়েছে, সুতরাং .Bashrc সর্বদা চালানো হবে যাই হোক না কেন। Line লাইনটি সেখানে রাখা উচিত হয়নি! যদি সেই লাইনটি না থাকে তবে আপনার সমস্যা হত না।

আপনাকে অন্য কোনও উপায় খুঁজে পেতে বা কোনও প্রশাসক খুঁজতে হবে। অ্যাডমিনদের জন্য এটিই।


কিছু ভাল পয়েন্ট; হিসাবে আপনি ব্যাখ্যা কোন এক্সিকিউটেবল পাস হিসাবে কমান্ড সাহায্য করতে পারেন, কিন্তু একটি কিছুটা তর্ক করা বিন্দুতে যদি /bin/sh করেনি প্রথম চালানো পেয়ে যায়, এটা হবে সাহায্য, কারণ ব্যাশ নেই লোড ~/.bashrcযখন যেমন প্রার্থনা sh। এই উত্তরটি আপনার অন্য উত্তরের সুপারসেট, সুতরাং দয়া করে অন্যটি মুছুন।
এমকিলেমেন্ট

3

কিছুটা এইরকম:

ssh host "/bin/bash --norc"

যা কাজ করে বলে মনে হচ্ছে, তবে মনে রাখবেন যে PS1 সেট করা নেই তাই আপনি কোনও প্রম্পট ছাড়াই কমান্ড টাইপ করবেন।

এটি অ-ধ্বংসাত্মক হওয়ার সুবিধা রয়েছে।


1
এটি কাজ করে না, এটি প্রথমে একটি সফল লগইনের জন্য চেষ্টা করেছিল, কিন্তু লগইন করতে পারে না, এবং তাই বাশ --norc চালাতে পারে না
টম রিটার

2

চেষ্টা

echo ^C | ssh <hostname> ' rm .bashrc'

There সেঃ কন্ট্রোল-ভি থাকে তখন সি


1
এটি আমার সিস্টেমে ctrl-v এবং ctrl-c। যাই হোক ধন্যবাদ! :)
mzuther

2
ssh -t user@host "bash --norc --noprofile -c '/bin/rm .bashrc'"

এটি আমার পক্ষে খুব সীমিত পরিবেশে কাজ করেছিল যখন কিছুই হবে না। আমাকে .bashrc এর পুরো পথটি নির্দিষ্ট করতে হয়েছিল।
zbeekman

1

Ctrl-C ম্যাসিং যতক্ষণ কাজ করে আপনি .bashrc প্রস্থান হওয়ার আগে একটি ctrl-C পেতে পারবেন works দুর্ভাগ্যক্রমে, exit.bashrc এর প্রথম দিকে হলে এটি করা কঠিন হতে পারে ।

আপনি সরাসরি এসএসএসে পাইপ করে যত তাড়াতাড়ি সম্ভব একটি সিটিআরএল-সি স্থাপন করতে পারেন:

{ echo ^C; cat /dev/tty; } | ssh -tt user@host

নোট করুন যে ^Cটাইপ করা হয় ctrl-V এর পরে ctrl-C।

এই পাইপগুলি একটি একক সিআরটিএল-সি এর পরে নিয়ন্ত্রণকারী টার্মিনাল থেকে ইনপুট দেয়, যখন -ttএকটি পিচিউডো-টার্মিনাল বরাদ্দ করতে বাধ্য করে। যতটা সম্ভব .bashrc কে বাইপাস করার সময় এগুলি আপনাকে রিমোট মেশিনে একটি (কিছুটা ত্রুটিযুক্ত) শেল দেয় told


0

কমান্ডটি .bash_profileব্যবহার করে খালি ফাইলটি দিয়ে ওভাররাইট করার চেষ্টা করতে পারেন scp। আমি যেটা গুগল করেছি, সেখান থেকে স্কিপ একটি অ-ইন্টারেক্টিভ লগইন ব্যবহার করে যা পড়ে না .bash_profile


আমি যদি না (হাইপোথটিকালি) ডিরেক্টরি কাঠামোর কথা ভুল মনে করি এবং এটি আমাকে ত্রুটি দেয় না তবে এটি কাজ করে না - scp ফাইল (গুলি )ও চালায়।
টম রিটার

1
লোকেরা যে বিষয়টি বুঝতে পারছে না তা হ'ল স্ক্যাপগুলি বিশেষ কিছু নয়; এটি কেবলমাত্র ssh ওভার কমান্ড - যার অর্থ একটি ইন্টারেক্টিভ এসএস সেশনের জন্য ঘটে যাওয়া সবকিছুই স্কিপ সহ সুখী হয়।
লর্ডস

এসএফটিপি সম্পর্কে কী, এটি একটি এসএসএস উপ-সিস্টেম।
allo

0

আপনি কেবল বাশার্ক ফাইলটি মুছতে পারেন:

ssh <hostname> rm ~/.bashrc

সমস্যাটি বাশার্কে নয়, .bash_ প্রোফাইলে ফাইলটিতে রয়েছে।
লরেন্ট এটিমেবল

1
এটি কাজ করে না - এটি প্রথমে শেলের জন্য চেষ্টা করে এবং ব্যর্থ হয়।
টম রিটার

0

যদি আপনি সিস্টেমটি সাধারনত সেটআপ করেন তবে .bash_profile কোনও অ-ইন্টারেক্টিভ শেলের জন্য চালিত হবে না (যেমন একটি কমান্ড চালানো)।

আপনি যেহেতু সমস্যাটি .বাশ_প্রফাইলে ফাইলে রয়েছেন তাই, এটি এড়িয়ে যাওয়ার চেষ্টা করুন:

ssh user@host "mv ~/.bash_profile ~/.bash_profile_broken"

ফাইলগুলি কোনভাবে লিঙ্কযুক্ত তা আমি ভাবিনি - .bash_profile এর মধ্যে .bashrc = (আমি আরও তথ্য যুক্ত করেছি
টম রিটার

1
তবে লকি যা পরামর্শ দিচ্ছে - যা ব্যাশ ম্যান পৃষ্ঠা দ্বারা নিশ্চিত করা হয়েছে - এটি হ'ল একটি ইন্টারেক্টিভ শেল .bashrc বা .bash_profile দ্বারা চলবে না। তবে, আপনি যখন ssh কমান্ড লাইনে কমান্ডগুলি পাস করেন (যেমন এই উদাহরণটির মতো), তখনও ব্যাশটি "ইন্টারেক্টিভ" শেল হিসাবে শুরু হয়, যার অর্থ এটি আপনার .bashrc ফাইলটি পড়বে। সুতরাং একটি ভাল ধারণা, কিন্তু দুর্ভাগ্যক্রমে ssh সহযোগিতা করবে না।
larsks

0

ওহ = 'USER @ HOST'; ssh $ UH 'mv ~ / .Bashrc ~ / letmein'; ssh $ UH

দয়া করে কেটে চালাবেন না, পরিবর্তন করুন userএবং host, তারপরে সম্পাদনা করুন letmeinএবং সংরক্ষণ করুন.bashrc


0

ইউজার 6০০৯৯ এর মত, এটি আমার পক্ষে কাজ করেছিল, তবে আমি শেল-নির্দিষ্ট স্টার্টআপ ফাইল .bashrc ব্যবহার করি, সুতরাং / বিন / এস-এর সাথে লগ ইন করা আমার পক্ষে কাজ করে।

তবে, আপনি যদি "এরকম ভাগ্য নেই" অবস্থায় থাকেন তবে আমি ব্যবহারকারী 60000 এর এবং ডেনিস ডাব্লু এর সমাধানগুলির ভিত্তিতে এই সমাধানটি দিচ্ছি:

ssh -t you@host  /bin/bash --noprofile  --norc

ডেনিস ডাব্লু --norc বিকল্পের প্রস্তাব দিয়েছিল, যা কেউ বলেছিল যে তাদের পক্ষে কাজ করে না।

স্টার্ট আপ ফাইলগুলি অক্ষম করার বিকল্পগুলির জন্য "ম্যান বাশ" বা "ম্যান (আপনার শেল)" চালান। সমস্যাটি ঠিক করার জন্য আপনার কেবল একটি ঘৃণ্য শেল ব্যবহার করা উচিত।


0

সার্ভারে লগইন করার অন্য উপায়টি প্রোফাইল ছাড়াই, দয়া করে নীচের আদেশটি সন্ধান করুন
ssh -t user@host bash --noprofile

পেড ফাইল এবং অন্য কোনও ব্যবহারকারী ব্যবহার করে এডাব্লুএস এর জন্য
ssh -ti "YOUR-PEM-FILE-NAME.pem" ec2-user@YOUR-IP-ADDRESS bash --noprofile

আশাকরি এটা সাহায্য করবে!


-1

উপরে দেওয়া পরামর্শ এবং প্রতিক্রিয়াগুলি থেকে, আমি বলব যে এটি .bashrc বা .bash_profile ফাইল নয়। এছাড়াও ssh ম্যানপেজটি বলেছে যে আপনি যদি কোনও আদেশ কার্যকর করার জন্য নির্দিষ্ট করেন তবে আপনার প্রোফাইল ফাইলগুলি পড়বে না।

আমি পরম পথ থেকে একটি ভিন্ন লগইন শেল (ksh? Csh? Sh?) চালানোর চেষ্টা করার পরামর্শ দেব; এছাড়াও, সতর্কতা অবলম্বন করুন যে এটি সম্পূর্ণ ভিন্ন সমস্যা হতে পারে (কোটা? আপনার বাড়ির ডিরেক্টরিতে চালানো এবং পড়ার অনুমতি?), তাই পার্শ্ববর্তী পদ্ধতির চেয়ে ভাল হবে। আপনি কি অন্য ব্যবহারকারীকে একটি করতে জিজ্ঞাসা করতে পারেন ls -la $YOUR_HOME_DIRএবং ফলাফলটি আপনাকে মেল করতে পারেন?

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