এটি এমন একটি সমস্যা যা আমি দীর্ঘদিন ধরেই আসছি, তবে প্রতিবারই আমি হারিয়ে যাওয়ার চেষ্টা করার চেষ্টা করেছি, তাই আমি অনুভব করেছি যে এখানে আরও অভিজ্ঞ কেউ আমাকে সহায়তা করতে পারে বলে আমি এখানে আরও জিজ্ঞাসা করতাম।
পটভূমি
আমার রাস্পবেরি পাই রাস্পবিয়ান জেসি চলছে, এবং আমি এটিতে লগইন করতে এবং দূরবর্তী অবস্থান থেকে আদেশগুলি কার্যকর করতে আমি প্রায়শই এসএসএইচ ব্যবহার করি। আমার প্রথম এসএসএইচ সেশনের সময় আমি লক্ষ্য করেছি যে প্রতিবার লগ ইন করার সময় আরপিআই-তে একটি ssh-agent
প্রক্রিয়া তৈরি হয়েছিল, কিন্তু আইএনজি দেওয়ার সময় কখনই মারা যায় না exit
: বেশ কয়েকবার লগইন এবং আউট হওয়ার ফলে একগুচ্ছ ssh-agent
প্রক্রিয়া কিছুটা না করেই সেখানে ঝুলতে থাকে। এখানে ম্যান পেজ এবং উত্তরগুলি ঘুরে বেড়ানো এবং সেখানে পড়া এবং আমি সম্প্রতি এর উদ্দেশ্য বুঝতে ssh-agent
পেরেছি এবং আমি আরও শিখেছি যে লগ আউট করার সময় এটি সাধারণত মারা যায়, তাই আমি কেন নিজেকে তা জিজ্ঞাসা করতে শুরু করি। তদুপরি, আমি লক্ষ্য করেছি যে জারি করার source ~/.bashrc
কারণে আরও একটি উদাহরণ ssh-agent
তৈরি হয়েছিল। আমি আপেক্ষিক ম্যান পেজে পড়েছিপরিবেশের পরিবর্তনশীল SSH_AGENT_PID
সংজ্ঞায়িত করা উচিত কারণ ssh-agent
প্রোগ্রামটি eval
আউটপুট নির্বাহ করতে এবং এমন ভেরিয়েবলগুলি সংজ্ঞায়িত করার জন্য একটিের মধ্যেই শুরু করা উচিত , যা পরে ssh-agent -k
(বর্তমান অধিবেশন সম্পর্কিত এজেন্টকে হত্যা করার জন্য) সহ এসএসএইচ-সংক্রান্ত অন্যান্য কমান্ড দ্বারা ব্যবহৃত হয় , তাই আমি দৌড়ে echo $SSH_AGENT_PID
এবং echo $SSH_AUTH_SOCK
, কিন্তু তারা উভয় খালি ছিল। আমি হঠাৎ বুঝতে পেরেছিলাম: সম্ভবত প্রক্রিয়াটি লগআউটে মারা যায় না কারণ ssh-agent -k
সেট করা হয়নি এমন পরিবেশের পরিবর্তনশীল থেকে তার পিআইডি পড়ার চেষ্টা করে।
সমস্যাটি
যেহেতু ssh-agent
লগআউটে হত্যা করা হচ্ছে না, এবং এটি অবশ্যই ঘটবে কারণ প্রয়োজনীয় পরিবেশের ভেরিয়েবলগুলি সেট করা হয়নি, এটি কেবলমাত্র একটি জিনিসটির অর্থ হতে পারে: যে ssh-agent
লগইনে কল করে সে সম্ভবত এটি সঠিক উপায়ে না করে (যা হবে eval "$(ssh-agent -s)"
) । তো আমি ভাবলাম: আচ্ছা, সমস্যা কি? এজেন্টটি শুরু করার জন্য এবং ম্যানুয়ালি এটিকে ঠিক করার জন্য যে কোনও কনফিগারেশন ফাইল, পরিষেবা বা লগইন স্ক্রিপ্ট কার্যকর করা হবে তা আমি খুঁজে পাব! পৃথিবীতে কোথায় থাকতে পারে?
আমি কি চেষ্টা করেছি
যেহেতু আমি লক্ষ্য করেছি যে ssh-agent
প্রতিবার কল করার পরে একটি স্প্যানড হয় তাই source ~/.bashrc
এটি আমি প্রথম ফাইলটি পরীক্ষা করেছিলাম তবে সেখানে এসএসএইচ সম্পর্কিত কোনও কিছুই রিমোটলি রেফারেন্স করা হয়নি। আমি নিম্নলিখিত সমস্ত ফাইলের vi
মধ্যে স্ট্রিংটি ব্যবহার করে অনুসন্ধান ssh
চালিয়েছি, তবে কিছুই পাইনি :
~/.bashrc
~/.profile
/etc/bash.bashrc
/etc/profile
/etc/profile.d/ (every file in this folder)
/etc/environment
এর সাথে যুক্ত হতে পারে এমন আরও কিছু ফাইল রয়েছে source ~/.bashrc
? আমি আসলে জানি না।
তারপরে আমি প্রাসঙ্গিক systemd
পরিষেবাদিগুলি অনুসন্ধান করেছি , তবে কেবল ssh.service
এটিই পাওয়া গেছে , WantedBy=multi-user.target
তাই এটি লগইনে চালিত হয় না (এবং ভাল, এটি স্পষ্ট যেহেতু এটি এসএসএইচ সার্ভার ডিমন হিসাবে রয়েছে)।
আমি আমার /home/pi
ফোল্ডারের প্রতিটি ফাইল একটি অস্থায়ী ফোল্ডারে নিয়ে যাওয়ার চেষ্টা করেছি এবং লগ আউট করে আবার ফিরে এসেছি, কিন্তু ssh-agent
এখনও তৈরি হয়েছি ।
অবশেষে, আমি চেম্বারে থাকা আমার শেষ শটটিও ছুঁড়ে ফেলেছিলাম: আমি find / -name 'ssh-agent'
মূল হিসাবে দৌড়েছি , যা কেবল ছাপানো /usr/bin/ssh-agent
, একটি এক্সিকিউটেবল, তাই আমি একটি জাল এক্সিকিউটেবল তৈরি করেছিলাম যা মূলত কেবল প্যারেন্ট কমান্ড লগ করেছিল :
#! /bin/bash
ps -o args= $PPID > /home/pi/LOG
cat /proc/$PPID/cmdline >> /home/pi/LOG
আমি আসলটির নাম পরিবর্তন করে /usr/bin/ssh-agent
এটিকে নকল দিয়ে সঠিক অনুমতি / ব্যবহারকারী / গোষ্ঠী স্থাপন করে পুনরায় স্থান দিতাম source ~/.bashrc
, তারপর LOG
ফাইলটি মুদ্রণ করেছি :
-bash
-bash
কী চলছে সে সম্পর্কে একটি ক্লুও নয়।
আরও কিছু বিবরণ
আমি আরও কিছু বিশদ যুক্ত করছি, আমি জানি না তারা সহায়ক হতে পারে কি না তবে আপনি জানেন ... দুঃখিতের চেয়ে ভাল নিরাপদ।
এই আমার
.bashrc
।আমি
dummy
ব্যবহার করে একটি নতুন ব্যবহারকারী তৈরি করেছিuseradd -m dummy
, এবং এটিতে লগ ইন করা কোনও শুরু করে নাssh-agent
(আমার মনে হয় এটির কোনও অর্থ হতে পারে)।diff /home/pi/.bashrc /home/dummy/.bashrc
শো মূলত কিছুই (ঠিক একটি মন্তব্য আমি তৈরি), একইdiff /home/pi/.profile /home/dummy/.profile
।এজেন্ট সকেট
SSH_AUTH_SOCK
সেট না করা সত্ত্বেও সমস্যা ছাড়াই তৈরি করা হয়:pi:~$ ls -lAh /tmp/ssh-vQRTAyj7DJry/ total 0 srw------- 1 pi pi 0 Jan 28 03:12 agent.1328
নিশ্চিত নয় কেন, তবে
ssh-agent
প্রক্রিয়াটির পিআইডি হওয়ার আগে সকেট ফাইলের নাম্বারটি সর্বদা এক ।স্নিপেট থেকে
htop
:PID USER PRI NI VIRT RES SHR S Command 1 root 20 0 5472 3900 2728 S /sbin/init 1329 pi 20 0 3696 224 16 S └─ ssh-agent -s
ইনস্টল করা প্যাকেজগুলি মিলছে
ssh
:pi:~$ apt list --installed | grep ssh libpam-chksshpwd/oldstable,now 1.1.8-3.1+deb8u2+rpi3 armhf [installed] libssh-gcrypt-4/oldstable,now 0.6.3-4+deb8u2 armhf [installed,automatic] libssh2-1/oldstable,now 1.4.3-4.1+deb8u1 armhf [installed,automatic] openssh-client/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] openssh-server/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] openssh-sftp-server/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] ssh/oldstable,now 1:6.7p1-5+deb8u4 all [installed] sshpass/oldstable,now 1.05-1 armhf [installed]
খুঁজছেন
ssh-agent -s
যাও recursively ব্যবহারgrep
মধ্যে/etc
এবং/lib
উৎপাদনের কোনো ফলাফল নেই।আমার কোনও ডেস্কটপ এনভায়রনমেন্ট ইনস্টল করা নেই, তবে এতে
/etc/X11
কয়েকটি কনফিগারেশন ফাইল সহ আমার একটি ফোল্ডার রয়েছে। আমি অন্য কিছুতে ফোল্ডারটির নাম বদলে নেওয়ার চেষ্টা করেছি এবং সেক্ষেত্রে পুনরায় বুট করার চেষ্টা করেছি, তবে প্রক্রিয়াটি এখনও স্প্যানড হয়ে যায়, স্পষ্টতই এর সাথে এর বেশি কিছু করার নেই।
উপসংহার
এখন, এটিকে যতটা সম্ভব সহজ করার জন্য, আমি কেবল দুটি প্রশ্ন পেয়েছি:
- কোথায় এবং কীভাবে এই
ssh-agent
উত্সাহিত হয়েছে, কমান্ড জারি করে? - প্রয়োজনীয় পরিবেশের ভেরিয়েবলগুলি সেট না করে কেন এটি সঠিক উপায়ে ডাকা হবে না এবং সেইজন্য প্রক্রিয়াটি অনির্দিষ্টকালের জন্য স্তব্ধ হয়ে যায়?
~/.bashrc
তখন কী আছে আমি অবাক হই ।