কীভাবে এক লাইনে এসএসএইচ করবেন


26

আমি কীভাবে এক লাইনে এসএসএইচের মাধ্যমে অন্য কম্পিউটারের সাথে সংযোগ করব? যদি আমি ssh host@IPএটি করি তবে এটি আমার দ্বিতীয় লাইনে পাসওয়ার্ড প্রবেশ করানো দরকার। আমি ভাবছিলাম যে আমি এরকম কিছু করতে পারি: ssh host@IP | echo passwordতবে এটি পাসওয়ার্ড চাওয়ার আগে পাসওয়ার্ডটি রাখে।


3
এই ধরণের চিন্তাভাবনা টেলনেটের দিনগুলি থেকে আসে এবং প্রত্যাশা করে, ইন্টারনেট যখন নিরাপদ স্থান ছিল তখনই ফিরে আসবে। অ্যালেনের উত্তরটি সঠিক, জাকুজের উত্তরটি প্রযুক্তিগতভাবে সত্য তবে বেশিরভাগ জায়গায় কাজের সরঞ্জাম নয়।
ক্রিগগি

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

যদি sshস্টিডিনের পাসওয়ার্ডটি পড়েন, তবে echo password | ssh host@IPকাজ করবে তবে সাধারণত এসএসএইচ টার্মিনাল থেকে সরাসরি পড়ার চেষ্টা করে।
পাওলো ইবারম্যান

উত্তর:


82

আপনার পাসওয়ার্ডটি অত্যন্ত সুরক্ষিত হওয়ার কারণে আপনার পাসওয়ার্ডটি কমান্ড লাইনে না রেখে প্রমাণীকরণের জন্য আপনার এসএসএইচ কী ব্যবহার করা উচিত ।

আপনার এসএসএইচ কীগুলি সেট আপ করার পরে এটি যেভাবে কাজ করে তা হ'ল কমান্ড জারি করতে হবে:

ssh user@host

এবং অন্য কোনও জিনিস টাইপ না করে আপনি স্বয়ংক্রিয়ভাবে লগ ইন হয়ে যাবেন।


ম্যাকস থেকে ম্যাক / ফ্রিবিএসডি / লিনাক্সে এসএসএইচ পাবলিক কী অনুলিপি করুন

এটি ধরে নিয়েছে যে পাসওয়ার্ড ভিত্তিক প্রমাণীকরণের মাধ্যমে আপনার কাছে দূরবর্তী সার্ভারে অ্যাক্সেস রয়েছে (পাসওয়ার্ডে টাইপ করা) এবং আপনি ইতিমধ্যে আপনার ব্যক্তিগত / সার্বজনীন কীপায়ের তৈরি করেছেন (যদি না হয় তবে নীচে দেখুন)। নিম্নলিখিত উদাহরণে, আমরা আরএসএ ব্যবহার করছি। আরম্ভ করার জন্য আসুন কীটি অনুলিপি করুন (সচেতন থাকুন যে "হোম" ডিরেক্টরিটি ম্যাকস, লিনাক্স, বিএসডি ইত্যাদির মধ্যে পৃথক রয়েছে):

এসসিপি ব্যবহার:

scp ~/.ssh/id_rsa.pub username@hostname:/Users/username/.ssh/

অথবা কেবলমাত্র ফাইলটিকে ক্যাট-ইন করা authorized_keys(আমি এই পদ্ধতিটি পছন্দ করি):

cat id_rsa.pub | ssh username@hostname ' cat >>.ssh/authorized_keys'

(আপনার মূল নাম পৃথক হতে পারে) যদি দূরবর্তী সার্ভারে .ssh ডিরেক্টরি উপস্থিত না থাকে তবে আপনাকে লগইন করে এটি তৈরি করতে হবে।

এখন কীটি ম্যাক থেকে রিমোট সার্ভারে অনুলিপি করা হয়েছে । রিমোট সার্ভারে এসএসএইচ পাবলিক কী এর জন্য সঠিক অনুমতিগুলি সেট করুন:

chmod 600  ~/.ssh/id_rsa.pub

এরপরে এসএসএইচ অনুমোদিত_কিজ ফাইলগুলিতে কী যুক্ত করুন, যদি ফাইলটি উপস্থিত না থাকে তবে এটি তৈরি করুন।

ফাইলটি authorized_keysইতিমধ্যে ~/.sshনিম্নলিখিত কমান্ডটি ব্যবহারের মধ্যে উপস্থিত থাকলে :

cat id_rsa.pub >> authorized_keys

ফাইলটি উপস্থিত না থাকলে নিম্নলিখিত কমান্ডগুলি প্রবেশ করান:

cat id_rsa.pub > authorized_keys

chmod 600 authorized_keys
chown user:group authorized_keys


ম্যাকোজে এসএসএইচ পাবলিক / প্রাইভেট কী তৈরি করুন

অ্যাপ্লিকেশন -> ইউটিলিটিস -> টার্মিনালে গিয়ে টার্মিনালটি খুলুন

টার্মিনালে, কী জেনারেশন শুরু করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন

ssh-keygen -t rsa

এরপরে আপনাকে সেই অবস্থানটি সরবরাহ করতে অনুরোধ করা হবে যেখানে আপনি ব্যক্তিগত কী ফাইলটি তৈরি করতে চান:

কী ( /Users/username/.ssh/id_rsa) সংরক্ষণ করতে হবে তাতে ফাইলটি প্রবেশ করান :

ডিফল্ট স্থানে কী তৈরি করতে এটিকে খালি ছেড়ে দিন /Users/username/.ssh/id_rsa। সর্বজনীন কী ফাইলটি একই স্থানে এবং একই নামের সাথে তৈরি করা হবে তবে .PUB এক্সটেনশান সহ।

আপনাকে একটি পাসফ্রেজ চয়ন করার জন্য অনুরোধ জানানো হবে। এটি ব্যক্তিগত কী ব্যবহার করতে the চ্ছিক পাসওয়ার্ড ।

Enter passphrase (empty for no passphrase):

আপনার এসএসএইচ কী তৈরি করা হয়েছে।

এখন, মনে রাখবেন, আপনি যদি একটি পাসফ্রেজ রাখেন তবে প্রতিবার সংযোগ করার সময় আপনাকে এটি প্রবেশ করতে হবে। ইউটিলিটি ssh-agentআপনি একই সেশনে থাকাকালীন প্রতিটি সময় সংযোগ করার সময় ম্যানুয়ালি এটিকে প্রবেশ করার প্রয়োজনকে মেমোরিতে পাসফ্রেজ রাখবে। বিস্তারিত জানতে দেখুনman ssh-agent


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

+1 এটি সত্যিই খুব ভাল উত্তর যা কেবল যা বলে তার জন্য নয়, আপনি কীভাবে ব্যাখ্যা করেছেন তার কারণেও। ব্যবহারকারীদের পক্ষে অনুসরণ করা সহজতর এবং তাদের আরও সুরক্ষিত হতে সহায়তা করে এমন কোনও কিছুই আমার বইয়ের একটি প্লাস!
মনোমেথ

7
দুর্দান্ত উত্তর। ssh-copy-idউপরের কিছুটি স্বয়ংক্রিয় করার জন্য কেবল এটি যুক্ত করতে চেয়েছিলেন ।
স্কট

Ssh- এজেন্ট একটি উল্লেখ এছাড়াও সাহায্য করতে পারে। ওএস এক্স / ম্যাকোসের বেশিরভাগ (সমস্ত?) সংস্করণগুলি এর সাথে আসে এবং কী পাসওয়ার্ড সুরক্ষিত থাকা সত্ত্বেও এটি পাসওয়ার্ড-কম লগইনকে অনুমতি দেয়।
কিসিগমা

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

13

বেশ কয়েকটি সম্ভাবনা রয়েছে। আপনার উদাহরণটি অবশ্যই কাজ করবে না, তবে আপনি sshpassইউটিলিটি ব্যবহার করে অনুরূপ কিছু অর্জন করতে পারেন :

sshpass -p password ssh host@IP

দ্রষ্টব্য, এটি প্রস্তাবিত নয় কারণ এটি passwordঅন্যান্য প্রক্রিয়াগুলির জন্য বা শেল ইতিহাসে দৃশ্যমান হবে।

এটি করার আরও একটি ভাল উপায় হ'ল এসএসএইচ কী ব্যবহার করে পাসওয়ার্ডহীন প্রমাণীকরণ সেট আপ করা। সংক্ষেপে:

ssh-keygen -t rsa -f ~/.ssh/id_rsa
ssh-copy-id IP

sshpassআপনার প্রস্তাবিত হিসাবে আমি চেষ্টা করেছি , কিন্তু এটি বলেছে যে আদেশ পাওয়া যায় নি।
বেন এ।

8
ঠিক আছে ... আপনাকে সম্ভবত এটি ইনস্টল করতে হবে। এবং না, আমি এটি সুপারিশ করি না। Ssh কী ব্যবহার করে পাসওয়ার্ডহীন প্রমাণীকরণ সেট আপ করুন।
জাকুজে

4
@BenA। একটি পাবলিক / প্রাইভেট কীপ্যাড সংজ্ঞায়িত করে এবং জড়িত উভয় মেশিনে সেট আপ করে পাসওয়ার্ডহীন প্রমাণীকরণ সেট আপ করুন। এটি যে কোনও পাসওয়ার্ডের চেয়ে অনেক সহজ (এবং প্রকৃতপক্ষে নিরাপদ)
নোহাইলসাইড

8
হাজার বার না। sshpass একটি নোংরা হ্যাক যা ডিভাইসগুলির সাথে সংযোগের জন্য ব্যবহৃত হয় যা ssh কথা বলে তবে কীগুলি সঠিকভাবে না করে এবং এর প্রধান ব্যবহার হ'ল সেটআপ স্ক্রিপ্টগুলি। আপনি কোনও মাল্টিউজার মেশিনে sshpass ব্যবহার করবেন না ps auxw | grep sshpass অন্য ব্যবহারকারীদের ssh পাসওয়ার্ড বলবে।
ক্রিগগি

1
@ ক্রিগি পুরোপুরি নয়। আমি মূল-ভিত্তিক সমাধানের 100% পিছনে থাকাকালীন, আমার কাছে কয়েকটি অভ্যন্তরীণ-কেবল রাস্পবেরি পিসের উপর এস্পস্পাস রয়েছে (এলোমেলো কাজের জন্য, এবং এলোমেলো ক্লায়েন্টদের দ্বারা অ্যাক্সেস করা হয়েছে; কেবল অভ্যন্তরীণ ব্যবহারের জন্য চারপাশে কীগুলি পাস করা একটি ঝামেলা)। আপনার আদেশ চলমান নিম্নলিখিত আউটপুট দেয়: pi@sshbox:~ $ ps auxw | grep sshpass pi 4891 0.0 0.3 2256 1560 pts/0 S+ 06:29 0:00 sshpass -p zzzzzzzz ssh pi@192.168.0.208zzzzzzzzআক্ষরিক হয়; sshpass পাসওয়ার্ডের সামগ্রীকে মুখোশ দেয়। সম্ভবত পূর্ববর্তী পুনরাবৃত্তিগুলি গোপনীয়তা সম্পর্কে সচেতন ছিল না।
ফ্লিট

3

আমিও এর উত্তর খুঁজতে দীর্ঘ সময় ব্যয় করেছি। এটি অনিরাপদ হওয়া সত্ত্বেও এবং এই সমস্ত লোকেরা আপনাকে আরএসএ কীগুলি ( যা একটি আরও সুরক্ষিত এবং নির্ভরযোগ্য ধারণা ) ব্যবহার করতে বলছে , এটি বেশ সম্ভব।

এর expectজন্য ডাকা একটি প্রোগ্রাম ব্যবহার করুন । প্রত্যাশা আপনার জন্য stdout (এবং আমি মনে করি stderr সঠিকভাবে কনফিগার করা থাকলে), নির্দিষ্ট বার্তার জন্য অপেক্ষা করে আউটপুট দিয়ে তাদের প্রতিক্রিয়া জানায়। নিজেকে প্রত্যাশা করা আসলে একটি স্ক্রিপ্টিং ভাষা এবং আমি যখন এই একই জিনিসটি করছিলাম তখন সময়কালের কারণে আমার নিজের স্ক্রিপ্টটি সঠিকভাবে কাজ করতে খুব কষ্ট হয়েছিল। যাইহোক, প্রত্যাশাতে একটি হ্যান্ডি ইউটিলিটিও অন্তর্ভুক্ত autoexpect

অটোএক্সেক্টের সাহায্যে এটি আপনাকে দেখবে এবং আপনার জন্য একটি প্রত্যাশা স্ক্রিপ্ট তৈরি করবে। কেবলমাত্র অটেক্সেক্সেক্ট এবং আপনি যে আদেশটি চান তা চালান:

autoexpect ssh host@ip 

এবং আপনি সাধারণত যা করতে চান তা করুন। আপনি যখন প্রোগ্রামটি প্রস্থান করবেন ( exitssh'd শেল টাইপ করে), এটি স্ক্রিপ্ট তৈরি করবে। আপনি যে পুরো স্ক্রিপ্টটি লিখছেন তা কোনও প্রত্যাশিত স্ক্রিপ্টে না চাইলে আপনি শেলটিতে কমান্ডটি script.expটাইপ করার আগে প্রস্থানটি ছাড়ার জন্য অটোএক্সেক্ট (ডাকা ) থেকে স্ক্রিপ্টটি সম্পাদনা করতে পারেন exit। স্ক্রিপ্ট শেষ হওয়ার পরিবর্তনে আপনি যে রেখাটি সরতে চান তা হ'ল:

expect eof

যার অর্থ ফাইলের শেষের প্রত্যাশা। আশাকরি এটা সাহায্য করবে!


1
যদি অন্য কেউ এটি এখনও বলেনি তবে: জিজ্ঞাসা করুন ভিন্ন!
Synoli

2

ব্যবহার expectএকটি পরীক্ষা স্যুট মধ্যে ছাড়া অন্য কিছুর জন্য একটি SSH সংযোগ লগ ইন করতে শুধু সাধারণ ভুল।

@ বেন-এ যা খুঁজছেন তা ইতিমধ্যে এসএসএসে প্রয়োগ করা হয়েছে। কৌশলটি এটি কীভাবে ব্যবহার করতে হয় তা হল। সুতরাং এখানে যায়:

  1. ব্যবহার করে একটি পাবলিক / প্রাইভেট কী তৈরি করুন ssh-keygen। ইসিডিএসএ বা আরএসএকে -t(বা টাইপ) হিসাবে ব্যবহার করুন এবং আরএসএর জন্য 2048 বা 4096 -b(বা বিআইটিএস দৈর্ঘ্য) হিসাবে ব্যবহার করুন । লেখার মুহুর্তে এটি পর্যাপ্ত হওয়া উচিত। সর্বদা পাসওয়ার্ড ব্যবহার করুন!
  2. ssh-copy-idআপনি যে ~/.ssh/authorized_keysফাইলটিতে (সার্ভার ওরফে) লগ ইন করছেন তাতে যে মেশিনটি তৈরি করছেন তাতে তৈরি করতে উপরের বর্ণিত পদ্ধতিটি ব্যবহার করুন। এর মধ্যে আপনার সদ্য তৈরি করা সর্বজনীন কীটির একটি অনুলিপি রয়েছে।
  3. এখন আপনি যে মেশিনটি 'সার্ভারে' (বা ক্লায়েন্ট) লগইন করতে ব্যবহার করেন আপনি ফাইলটি খোলেন ~/.ssh/config। এটি উপস্থিত না থাকলে আপনি এটি তৈরি করতে পারেন।
  4. এই ফাইলটিতে, আপনি আপনার প্রয়োজনের জন্য নিম্নলিখিতগুলি যুক্ত করুন

    host <name you want to use for this connection>
        Hostname <DNS or IP of the server>
        user <user name you want to use>
        identitiesonly yes
        identityfile <path to the private key>
    
  5. আপনি এখন কেবল ssh <name>সংযোগটি সেটআপ করতে ব্যবহার করতে পারেন তবে এটির জন্য আপনার কীটির পাসওয়ার্ডের প্রয়োজন হবে। এটি সমাধানের জন্য, উদ্দেশ্য-এর জন্য বিকাশযুক্ত এবং অন্তর্ভুক্ত এস-এস-এজেন্ট ব্যবহার করুন। এজেন্টে আপনার কী যুক্ত করতে কেবল ব্যবহার করুন ssh-add <path to keyfile>। আপনাকে পাসওয়ার্ড জিজ্ঞাসা করা হবে, এবং এটি এই সেশনের জন্য আপনার জন্য কীটি নিরাপদে সংরক্ষণ করবে। যদি এটি ত্রুটিটি দেয় তবে "ssh- এজেন্ট খুঁজে পাওয়া যায় না" (বা অনুরূপ), এর অর্থ সম্ভবত এজেন্টটি শুরু করা হয়নি। আপনি এই সেশনটি ব্যবহার করে এটি শুরু করতে পারেন ssh-agent bash। এটি এতে সক্রিয় এজেন্টটির সাথে একটি নতুন শেল শুরু করবে।

এই পদক্ষেপগুলি ব্যবহার করার সময়, আপনি কেবল নিজের শংসাপত্রগুলি ছিনতাই করে আপনাকে ছদ্মবেশ তৈরি করা আরও শক্ত করে তোলেন না, তবে ব্যবহারযোগ্যতাটিকেও যথাযথভাবে রাখেন (প্লেইন পাসওয়ার্ডের চেয়ে এটির ব্যবহার সহজ)।

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