কে আমার এসএস-এজেন্ট শুরু করছে এবং কেন এটি সঠিকভাবে শেষ হবে না?


9

এটি এমন একটি সমস্যা যা আমি দীর্ঘদিন ধরেই আসছি, তবে প্রতিবারই আমি হারিয়ে যাওয়ার চেষ্টা করার চেষ্টা করেছি, তাই আমি অনুভব করেছি যে এখানে আরও অভিজ্ঞ কেউ আমাকে সহায়তা করতে পারে বলে আমি এখানে আরও জিজ্ঞাসা করতাম।

পটভূমি

আমার রাস্পবেরি পাই রাস্পবিয়ান জেসি চলছে, এবং আমি এটিতে লগইন করতে এবং দূরবর্তী অবস্থান থেকে আদেশগুলি কার্যকর করতে আমি প্রায়শই এসএসএইচ ব্যবহার করি। আমার প্রথম এসএসএইচ সেশনের সময় আমি লক্ষ্য করেছি যে প্রতিবার লগ ইন করার সময় আরপিআই-তে একটি 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কয়েকটি কনফিগারেশন ফাইল সহ আমার একটি ফোল্ডার রয়েছে। আমি অন্য কিছুতে ফোল্ডারটির নাম বদলে নেওয়ার চেষ্টা করেছি এবং সেক্ষেত্রে পুনরায় বুট করার চেষ্টা করেছি, তবে প্রক্রিয়াটি এখনও স্প্যানড হয়ে যায়, স্পষ্টতই এর সাথে এর বেশি কিছু করার নেই।


উপসংহার

এখন, এটিকে যতটা সম্ভব সহজ করার জন্য, আমি কেবল দুটি প্রশ্ন পেয়েছি:

  1. কোথায় এবং কীভাবে এই ssh-agentউত্সাহিত হয়েছে, কমান্ড জারি করে?
  2. প্রয়োজনীয় পরিবেশের ভেরিয়েবলগুলি সেট না করে কেন এটি সঠিক উপায়ে ডাকা হবে না এবং সেইজন্য প্রক্রিয়াটি অনির্দিষ্টকালের জন্য স্তব্ধ হয়ে যায়?

আপনার ~/.bashrcতখন কী আছে আমি অবাক হই ।
ইলক্কাছু

@ ইল্কাচ্চু ভাল, আপনি এখানে যান ...
মার্কো

উত্তর:


1

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

  • আপনি যদি ব্যবহার করছেন তবে libpam-sshএটি একটি সেশন শুরু করার অংশ হিসাবে স্বয়ংক্রিয়ভাবে আপনার জন্য একটি এসএসএইচ এজেন্ট শুরু করতে পারে এবং এমনকি যদি আপনার পাসওয়ার্ড না থাকে বা তাদের পাসফ্রেজ আপনার লগইন পাসওয়ার্ডের মতো হয় তবে আপনার কীগুলি স্বয়ংক্রিয়ভাবে লোড করতে পারে।

  • আপনি যদি gpg-agentএটি ব্যবহার করছেন তবে এটি theচ্ছিকভাবেও কাজটি সম্পাদন করতে ssh-agentপারে। এটির শাট ডাউনটি ভিন্নভাবে পরিচালনা করা হয়, সুতরাং কেবল SSH_AUTH_SOCKপরিবেশের পরিবর্তনশীল থাকবে, নাSSH_AGENT_PID

  • যদি আপনি ssh-এজেন্ট (যেমন পুটিং এর নাট্যাভিনয়) আপনার ওয়ার্কস্টেশন চলমান আছে এবং করতে সক্রিয় এজেন্ট ফরওয়ার্ডিং সঙ্গে একটি, SSH সংযোগ (এবং দূরবর্তী sshdএটা করতে পারবেন), দূরবর্তী হোস্ট-এ আপনি আবার শুধুমাত্র দেখতে হবে SSH_AUTH_SOCKছাড়া SSH_AGENT_PID... কারন এজেন্ট সকেট যায় sshdযার ফলে এটি আপনার স্থানীয় ওয়ার্কস্টেশন এর, SSH এজেন্ট ফিরে টানেল।


1
পরামর্শের জন্য আপনাকে ধন্যবাদ, তবে দুর্ভাগ্যক্রমে এই বিকল্পগুলির কোনওটিই আমার কাছে প্রযোজ্য না। আমার নেই libpam-ssh; উভয় SSH_AGENT_PIDএবং SSH_AUTH_SOCKআনসেট করা (সকেট অবশ্যই যাইহোক উপস্থিত আছে); আমি gpg-agentপুটিটিওয়াইতে এজেন্ট ফরোয়ার্ডিং সক্ষম করে না এবং করি না। আমি সত্যিই হারিয়েছি: \
মার্কো বোনেলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.