সমস্ত সংযুক্ত এসএসএইচ সেশন তালিকাবদ্ধ?


183

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

শেল থেকে, আমি কীভাবে এই দুটি সেশনের একটি তালিকা দেখতে পারি?

উত্তর:


188

whoবা w; who -aঅতিরিক্ত তথ্যের জন্য।

এই কমান্ডগুলি কেবলমাত্র টার্মিনাল ডিভাইসে সমস্ত লগইন সেশন দেখায়। একটি এসএসএইচ অধিবেশন সিউডো-টার্মিনাল ক্রীতদাসে থাকবে ( ptsযেমনটি TTYকলামে দেখানো হয়েছে , তবে সমস্ত পিটিএস সংযোগগুলি এসএসএইচ সেশন নয়। উদাহরণস্বরূপ, প্রোগ্রাম এর মত সিউডো-টার্মিনাল ডিভাইস তৈরি xtermবা screenদেখাবেন pts। কলামে পাওয়া বিভিন্ন মানগুলির আরও ভাল বর্ণনার জন্য pts এবং tty এর মধ্যে পার্থক্য দেখুন TTY। তদ্ব্যতীত, এসএফটিপি সেশনগুলি শেল লগইন সেশন নয় বলে এই পদ্ধতিটি কোনও এসএফটিপি সেশনে লগ ইন করে এমন কাউকে দেখাবে না।

স্পষ্টভাবে সমস্ত এসএসএইচ সেশন দেখানোর কোনও উপায় আমি জানি না। আপনি এর থেকে লগ-ইন তথ্য পড়ার মাধ্যমে এই তথ্য আবিষ্কার করতে পারেন utmp/ wtmpএকটি টুল মাধ্যমে মত last, wঅথবা whoপোর্ট 22 (অথবা খোলা TCP সংযোগগুলির যেখানেই থাকুন না কেন আপনার SSH এটি মত আমি শুধু বর্ণনা করেছি, অথবা তাদের উত্তর বর্ণিত @sebelk মত নেটওয়ার্কিং টুলস ব্যবহার করে ডিমন (গুলি) শুনছেন / করছেন)।

তৃতীয় পদ্ধতিটি আপনি নিতে পারেন এসএসএইচ ডেমন থেকে লগ আউটপুট পার্স করা। আপনার ওএস বিতরণ, এসএসএইচ বিতরণ, কনফিগারেশন এবং এর উপর নির্ভর করে আপনার লগ আউটপুট বিভিন্ন স্থানে থাকতে পারে। একটি আরএইচইএল 6 বাক্সে, আমি লগ ইনগুলি পেয়েছি /var/log/sshd.log। একটি আরএইচইএল 7 বাক্সে এবং একটি আর্চ লিনাক্স বাক্সেও journalctl -u sshdলগগুলি দেখতে আমার প্রয়োজন । কিছু সিস্টেমে এসএসএইচ লগগুলি সিলেগ-এ আউটপুট করতে পারে। আপনার লগগুলি এই জায়গাগুলিতে বা অন্য কোথাও হতে পারে। আপনি যা দেখতে পান তার একটি নমুনা এখানে:

[myhost ~]% cat /var/log/sshd.log | grep hendrenj | grep session
May  1 15:57:11 myhost sshd[34427]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May  1 16:16:13 myhost sshd[34427]: pam_unix(sshd:session): session closed for user hendrenj
May  5 14:27:09 myhost sshd[43553]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May  5 18:23:41 myhost sshd[43553]: pam_unix(sshd:session): session closed for user hendrenj

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

আমি শুধু ব্যবহার করার পরামর্শ দিচ্ছি w। বেশিরভাগ সময়, এটি আপনার পছন্দসই তথ্য পাবেন।



একটি স্পর্শকাতর সম্পর্কিত সমস্যার জন্য অনুসন্ধান করতে গিয়ে এটি পেয়েছি। কিছু যায় আসে না। এটি যে কোনও সেরা উত্তর আমি যে কোনও স্ট্যাক সাইটে দেখেছি! আমি এখন এই নির্দিষ্ট অঞ্চলটি সম্পর্কে আরও একটি টন জানি (আরও ভাল শব্দটির অভাবে) সম্পাদনা: ধন্যবাদ!
jscharf

107

আপনি নিম্নলিখিত কমান্ড সহ প্রতিটি সেশন ssh দেখতে পাবেন:

[root@router ~]# netstat -tnpa | grep 'ESTABLISHED.*sshd'
tcp        0      0 192.168.1.136:22            192.168.1.147:45852         ESTABLISHED 1341/sshd           
tcp        0      0 192.168.1.136:22            192.168.1.147:45858         ESTABLISHED 1360/sshd

ও সম্ভবত এটি দরকারী হতে পারে:

[root@router ~]# ps auxwww | grep sshd:
root      1341  0.0  0.4  97940  3952 ?        Ss   20:31   0:00 sshd: root@pts/0 
root      1360  0.0  0.5  97940  4056 ?        Ss   20:32   0:00 sshd: root@pts/1 
root      1397  0.0  0.1 105300   888 pts/0    S+   20:37   0:00 grep sshd:

4
ধন্যবাদ; শীর্ষস্থানীয় উত্তরের চেয়ে এই উত্তরটি আরও ভাল, এটি কেবল শেলটিতে লগইন করা ব্যবহারকারীদের তালিকাবদ্ধ করে। এই সমাধানটি এসএফটিপি ব্যবহারকারীদেরও সন্ধান করে।
শিফ

1
আজকাল বেশিরভাগ বাক্সে আপনি ব্যবহার করতে পারেনpgrep -ai sshd
সিসিপিজ্জা

@ সিপিপিজ্জা: pgrep: invalid option -- 'i'উবুন্টুতে 14.04 এ।
মার্টিন শ্রাইডার

2
@ মার্টিনশ্রেডার: -iকেবলমাত্র ম্যাক / বিএসডি স্বাদে উপলভ্য। উবুন্টুতে আপনি ব্যবহার করতে পারেন pgrep -af ssd। বিস্তারিত জানার জন্য সার্ভারফল্ট করুন
a

@ হাইডেনশিফের মতো আমাকেও এমন ব্যবহারকারীদের সন্ধান করতে হয়েছিল যে কেবল শেল ছাড়াই পোর্ট-ফরওয়ার্ডিংয়ের জন্য কেবল একটি এসএসএইচ টানেল খোলা আছে। এই সাহায্য!
টোবিয়াস কে।


7

সাধারণ রেফারেন্সের জন্য যুক্ত করা হয়েছে।

আপনি যদি ছদ্ম শেলটিতে থাকেন (উদাহরণ: / dev / pts / 0) সরলতম উপায়গুলির মধ্যে একটি হ'ল:

[user1@host ~]$ echo $SSH_CONNECTION

এটি ফিরে আসা উচিত: আপনার আইপি এবং পোর্ট এবং আইপি আপনার সংযুক্ত এবং পোর্ট

192.168.0.13 50473 192.168.0.22 22

আপনি ব্যবহার করে ttyবা who( w) থেকে কিছু তথ্য পেতে পারেন : (সম্পাদনা: আমি দেখতে পাচ্ছি এটি এখন অন্য পোস্টে উপরে তালিকাবদ্ধ)

[user1@host ~]$ who
user1 tty1          2018-01-03 18:43
user2 pts/0        2018-01-03 18:44 (192.168.0.13)

বাশ গ্লোবালগুলি নিয়ে কাজ করে আগের উত্তরগুলিতে প্রসারিত করা। আমি SECONDSবিশ্বব্যাপী উল্লেখ করার পরামর্শ দিতে পারে । আপনি echo $SECONDSএটির মাধ্যমে এটি ব্যবহার করতে পারেন যা অনুমিত সংযোগের পরে এটি সময়ের পরিমাণ প্রদর্শন করে
NerdOfCode

এটি বর্তমানে সক্রিয় সেশনের জন্য তথ্য প্রদর্শন করবে - আপনি যেটিতে টাইপ করছেন। তবে প্রশ্নটি কীভাবে বর্তমানে সংযুক্ত সমস্ত সেশনগুলি তালিকাভুক্ত করবে asks
জি ম্যান

6

@ সেবেলকের উত্তরে সম্প্রসারণ:

সমাধানটি ব্যবহার netstatকরা ভাল তবে মূলের সুবিধার প্রয়োজন। এছাড়াও, net-toolsপ্যাকেজটি (যা সরবরাহ করে netstat) কিছু নতুন লিনাক্স ডিস্ট্রোর ( https://dougvitale.wordpress.com/2011/12/21/drerecated-linux-networking-commands-and-their-replacements/ ) এ অবচয় করা হয়েছিল ।

বিকল্প বিকল্প হ'ল netstat, এর জন্য প্রতিস্থাপনটি ব্যবহার করা ss। উদাহরণস্বরূপ (মনে রাখবেন যে আপনার আর মূলের দরকার নেই):

user@router:~# ss | grep ssh
tcp    ESTAB      0      0      192.168.1.136:ssh                  192.168.1.147:37620                
tcp    ESTAB      0      0      192.168.1.136:ssh                  192.168.1.147:37628

2

তুমি ব্যবহার করতে পার

last | head

কে সম্প্রতি সিস্টেমে লগইন করেছে তা দেখার জন্য আমি এটি আমার লগিন স্ক্রিপ্টে কয়েক বছর ধরে ব্যবহার করেছি। আপনার লগইনটি ব্যবহার করে কেউ সিস্টেমে রয়েছে কিনা তা দেখার জন্য এটি একটি দুর্বল-ম্যান-সুরক্ষা ডিভাইস ছিল।


1
... তবে এটি অ্যাক্টিভ সেশনগুলির তালিকা হতে পারে না (এই প্রশ্নটি কী)। লগইন ক্রিয়াকলাপের উপর নির্ভর করে এমনকি আপনি যে সেশনটি চালিয়েছিলেন lastতা তালিকাভুক্ত নাও হতে পারে।
মুরু

1
"লাস্ট-পি এখন" সমস্ত বর্তমান এসএসশন সেশন তালিকাভুক্ত করে।
জে উইলিয়ামস

@ জওলিলিয়ামস কোন সংস্করণ lastসমর্থন করে -p? এটার কাজ কি?
mwfearnley

@ এমওফায়ার্নলি সংস্করণ "last from util-linux 2.31.1"এটি নিশ্চিতভাবে আছে।
ভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.