ssh -L (ত্রুটি: বাইন্ড: ঠিকানা ইতিমধ্যে ব্যবহারে রয়েছে)


48

খুব সহজ, আমি জানি যে এটি আমার আগে ঘটেছিল। এউ-তে কোনও ভাল উত্তর খুঁজে পাওয়া যায়নি।

আমি পোর্টস বেঁধে রেখে একটি ssh অধিবেশন চালাচ্ছিলাম:

ssh -L 3000:<server_name>:22

আমি কেবল আমার সংযোগটি হারিয়েছি lost আমি যখন একই কমান্ডটি ব্যবহার করে পুনরায় সংযোগ করার চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 3000

বন্দরে আবার আবদ্ধ হওয়ার জন্য আমি কীভাবে আমার মেশিনে ssh পুনরায় সেট করব? স্থানীয় মেশিনটি পুনরায় সেট করা কাজ করে।

উত্তর:


66

আপনি যে বন্দরটি ব্যবহার করছেন তা কেবল হত্যা করতে পারেন না?

 lsof -ti:5901 | xargs kill -9

lsof -ti:5901বন্দর যা ব্যবহার করছে তা সন্ধান করতে 5901

kill -9বন্দরটি যা ব্যবহার করছিল তা হত্যা করতে পুরো জিনিসটি পাস করুন 5901

আপনি যে পোর্টটি আবার খুলতে চান তার সাথে প্রতিস্থাপন করুন।


হ্যাঁ, আপনি যে কোনও পোর্টকে অবরুদ্ধ করা হচ্ছে তাতে পোর্ট নম্বরটি পরিবর্তন করতে পারেন। আমি এটি উত্তর হিসাবে চিহ্নিত করতে যাচ্ছি।
কেবিল্ডস

আপনি যদি আমার মতো সতর্ক হন এবং / অথবা ভুলে যান তবে আপনি নিজেরাই lsof চালাতে চাইতে পারেন এবং এটি হত্যার আগে প্রক্রিয়াটি কী তা আবিষ্কার করতে পারেন। lsof -ti:5901একটি প্রক্রিয়া সংখ্যা, যেটি আপনি পরে পাস ফিরে আসবেkill -9
octern

3
যদি কোনও কিছুই 5901 পোর্ট ব্যবহার না করে (বা আপনি যে স্থানীয় পোর্টটি নির্দিষ্ট করছেন)?
মাইকেল

sudoপ্রক্রিয়াটি যদি সামনে না আসে তবে চেষ্টা করুনlsof
ধনী রিমার

2
kill -9প্রোগ্রামটি সম্পূর্ণ প্রতিক্রিয়াহীন না হওয়ার কোনও কারণ নেই । সংকেত # 9 (SIGKILL) অবিলম্বে প্রক্রিয়া ফ্লাশ বাফার, বন্ধ filehandles এবং সকেট করার একটি সুযোগ প্রদান ছাড়া এটা বন্ধ সঙ্গে একটি প্রক্রিয়া কিলিং, অস্থায়ী ফাইল, ইত্যাদি অপসারণ, যার মধ্যে সব প্রক্রিয়া করতে আপনি ব্যবহার করেন kill(SIGTERM ডিফল্ট) এর পরে, kill -1(সিএনএইচইউপিপি; হ্যাঙ্গআপ) এবং kill -2(সিগন্যাল; সিটিআরএল + সি কী প্রেরণ করে) যদি এটি কাজ না করে এবং শেষ পর্যন্ত kill -9 অন্য কিছু না করে তবে
TheDudeAbides

12

আমি মনে করি আপনার কাছে এখনও স্থানীয় বন্দর 3000 এর সাথে কিছু সংযুক্ত রয়েছে।

আপনি এটি দিয়ে খুঁজে পেতে পারেন

netstat -tulpn | grep 3000 

এবং তারপর এটি নিষ্পত্তি। উদাহরণস্বরূপ আমার মেশিনে:

[:~] % netstat -tulpn | grep 5900
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      2547/vino-server
tcp6       0      0 :::5900                 :::*                    LISTEN      2547/vino-server

প্রক্রিয়াটি সঠিকভাবে সনাক্ত করে এবং পোর্ট 5900 (ভিএনসি সার্ভার) এ সংযুক্ত রয়েছে correctly

আর একটি দরকারী আদেশ হ'ল

fuser 3000/tcp 

... sudoআপনার যদি বন্দরটি খোলার প্রক্রিয়াটির মালিক না হন তবে এগুলি সমস্তই চালানো দরকার ।


উত্তরের জন্য ধন্যবাদ. আমি বিষয়টি পুনরায় তৈরি করতে পারি কিনা তা দেখতে আমাকে এটি খনন করতে হবে। কেবলমাত্র সম্ভাব্য অ্যাপ্লিকেশন যা 3000 বন্দরটিতে শুনতে পারা যায় তা হ'ল পুরাতন ssh অধিবেশনটি সংযোগ বিচ্ছিন্ন হয়ে গিয়েছিল। আমার ব্যবহারকারীর প্রক্রিয়াটির মালিকানা ছিল তাই আমি ধরে নিয়েছিলাম যে আমি এটি চালাতে সক্ষম হব killall sshএবং এটি মারা যাব। অনুমান করুন যে এটি নয়
kbuilds

ব্যবহারের অনুস্মারকটির জন্য ধন্যবাদ sudo- এটিই আমি অনুপস্থিত ছিল।
এসিভি

5

আমি নিম্নলিখিতটি করে এটি পুনরায় তৈরি করতে এবং ঠিক করতে সক্ষম হয়েছি:

  • এমন কিছু খুলুন যা আপনার প্রক্রিয়াগুলি তালিকাভুক্ত করবে ( ps -ae)
  • sh( kill <proc_number>) নামক প্রক্রিয়াটি হত্যা করুন

তারপরে ssh সংযোগটি আবার খুলুন

বিকল্পভাবে, আমি এর সাথে সাফল্য পেয়েছি:

killall ssh

লোকাল মেশিনে টার্মিনালে


2

আরও একটি প্রতিযোগী: ss

এটি এর মতো ব্যবহার করা যেতে পারে: ss -ltp | grep 3000পোর্ট 3000 এ প্রোগ্রামটি শুনতে পাওয়া find

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