নিরাপদ যোগাযোগ
একটি কম্পিউটারকে দূরবর্তী আরেকটি কম্পিউটার দিয়ে নিয়ন্ত্রণ করা ইউনিক্স সিস্টেমের জন্য নতুন কোনো ব্যাপার না। আগে এই কাজে rlogin বা telnet ব্যবহৃত হত। কিন্তু সমস্যা হচ্ছে যে, এগুলো এফটিপির মত প্লেইনটেক্সটে ডাটা ট্রান্সফার করত। যার ফলে এগুলো ইন্টারনেটের ভিতরে ব্যবহার করা অনিরাপদ হয়ে উঠল।
ssh
এই সমস্যা থেকে সমাধান দিল ssh বা secure shell। এই প্রযুক্তির দুটো অংশ। একটি হল ssh server অন্যটি ssh client।
ssh সার্ভার তৈরী
এর জন্য আমরা প্রথমে openssh-server প্যাকেজটি ইন্সটল করবো। এবার আমরা কনফিগার করবো। কনফিগার করতে আমাদের /etc/ssh/sshd_config ফাইলটি এডিট করতে হবে।। এর জন্য আমরা এর একটি ব্যাকআপ রাখবো এভাবে:
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaultsএবার ন্যানো, ভিম বা ইম্যাকস্ দিয়ে ফাইলটি রুটমোডে খুলবো:
# emacs -nw cp /etc/ssh/ssh_configফাইলে যেসব লাইনগুলো # দিয়ে শুরু সেগুলো কমেন্ট। আমরা একলাইনে দেখতে পাচ্ছি:
Port 22এটি ssh এর ডিফল্ট পোর্ট। এজন্য ব্যবহার করাও অনিরাপদ। আমরা এটিকে 365 তে পরিবর্তিত করতে এডিট করে এটি লিখবো:
Port 365এবার আমরা সেভ করে বন্ধ করতে পারি।
এরপর আমরা ssh সার্ভার রিস্টার্ট দেবো এভাবে:
# /etc/init.d/ssh restartssh লগইন
লগইন করতে আপনাকে সার্ভারের হোস্টনেম জানতে হবে। আপনার কম্পিউটারে আপনি নিজে localhost ব্যবহার করে ঢুকতে পারেন। লোক্যাল নেটওয়ার্কের অন্য কম্পিউটারের হোস্টনেম ব্যবহার করে ঢুকতে পারেন। ইন্টারনেটের ক্ষেত্রে হয় আপনাকে তার ওয়েব এড্রেস অথবা আইপি এড্রেস জানতে হবে।
আমরা অধিকাংশই ডেডিকেটেড আইপি ব্যবহার করিনা। ফলে প্রত্যেক কানেকশনের সময় আইপি বদলায়। তাই আমাদের আইপি জানতে হবে যখন রিমোটলি এক্সেস করতে চাই। ধরুন, আমি চাই কাউকে আমার কম্পিউটারে এক্সেস দিতে। তাহলে আমি তাকে পাবলিক আইপি জানাবো। এটা জানতে এই কমান্ডটি দিতে পারি:
আপনি এটি alias করে রাখতে পারেন।
এখন আমি আমার কম্পিউটারে যুক্ত হবো। me নামের একজন ইউজার হিসেবে। আমরা যেহেতু ডিফল্ট পোর্টটি ব্যবহার না করে 365 ব্যবহার করছি তাই আমাদের কমান্ড হবে:
আমরা -p অপশন দিয়ে port লিখেছি। তারপর me@localhost দিয়ে localhost এর me এর সাথে যোগাযোগ করছি। এরপর আমরা এমনকিছু দেখতে পাবো:
প্রথমবার লগিনের সময় অথেনটিকেট করা সম্ভব হয়না। তারবদলে একটি ফিঙ্গারপ্রিন্ট দেখায়। এটি যদি ঠিক থাকে তাহলে আপনি yes লিখে এন্টার দেবেন। ফিঙ্গারপ্রিন্ট আপনাকে সার্ভারের এডমিনিস্ট্রেটর সরবরাহ করবে। তারপর আপনাকে me ইউজারের পাসওয়ার্ড দিতে হবে। সঠিকভাবে দিলে আপনাকে প্রম্পট দিবে। তখন আপনি সাধারণ টার্মিনালের মতই কাজ করতে পারবেন। সেশন বন্ধ করতে exit লিখে এন্টার দেবেন।
ssh-key এর মাধ্যমে লগইন
লগইনের আরেকটি উপায় হল ssh key তৈরী করা। এর দুটি অংশ। একটি পাবলিক কী, অন্যটি প্রাইভেট। ইউজার তথ্য প্রাইভেট কী দিয়ে এনক্রিপ্ট করে দিলে সেটি পাবলিক কী দিয়ে ডিক্রিপ্ট করা যায়। কিন্তু তার পরিবর্তন করা যায় না। এজন্য এটি বহুলব্যবহৃত একটি ব্যবস্থা। এজন্য আপনাকে একজোড়া কী জেনারেট করতে হবে। কী জেনারেট করতে পারেন এভাবে:
আপনি ssh-keygen কমান্ডটি দিলে প্রথমে জিজ্ঞাসা করবে কোন ফাইলে সেভ করবে। আপনি ডিফল্টটি সিলেক্ট করতে এন্টার চাপুন। এরপর পাসফ্রেজ/পাসওয়ার্ড দিতে বলবে আপনি নতুন একটি পাসফ্রেজ দুবার দিলে কী তৈরী হবে।
এবার আপনি নতুন তৈরী কী সিস্টেমে যোগ করবেন এভাবে:
ssh-add কমান্ডটি দেওয়ার পর পাসফ্রেজ জানতে চাইবে। সঠিক পাসফ্রেজ দিলে কীটি যুক্ত হবে।
এবার আপনার পাবলিক কীটি সার্ভারে পাঠানোর পালা। এটি করবেন এভাবে:
এরপর আপনি যে ইউজার হিসেবে লগিন করছেন তার পাসওয়ার্ড জিজ্ঞাসা করবে। সঠিক পাসওয়ার্ড দুলে কীটি যুক্ত হবে। এরপর থেকে লগিনের সময় আর কোনোরকমের অথেটিকেশনের দরকার হবে না।
কখনো কখনো এমনও হতে পারে যে আপনি মাত্র একটা কমান্ড দিতে চাচ্ছেন রিমোটলি। তার জন্য পুরো লগইন এর প্রয়োজন নেই। যেমন আমরা যদি রিমোট কম্পিউটারের র্যাম ও সোয়াপ সম্পর্কিত তথ্য জানতে `free কমান্ডটি ব্যবহার করতে চাই তাহলে সেটি করতে পারি এভাবে:
আবার আমরা যদি চাই এই কমান্ডের আউটপুট আমাদের লোকাল কম্পিউটারে memlog.txt ফাইলে রিডিরেক্ট করতে চাই তাজলে লিখবো:
এখানে free কে '' আবদ্ধ করা জরুরি। এরকমক্ষেত্রে আবদ্ধ অংশটুকু রিমোট কম্পিউটারে এবং আবদ্ধ নয় এমন অংশ লোকাল কম্পিউটারে কাজ করবে। অতএব আমরা যদি memlog.txt কে 'memlog.txt' লিখতাম তাহলে টেক্সটফাইলটি রিমোট কম্পিউটারে তৈরী হত।
scp ও sftp
scp অনেকটা cp কমান্ডের মতই তবে এটি রিমোটলি কাজ করতে পারে। অর্থাৎ আপনি যদি লোকাল কম্পিউটারের সাথে রিমোট কম্পিউটারে তথ্য আদানপ্রদান করতে চান তাহলে এটি ব্যবহার করতে পারেন। নীচে দুটি উদাহরণ দেওয়া হল:
প্রথম উদাহরণে আমরা লোকাল কম্পিউটারের হোম থেকে to_remote.txt ফাইলটি রিমোট কম্পিউটারের হোমে কপি করেছি। দ্বিতীয় উদাহরণে from_remote.txt ফাইলটি রিমোট থেকে লোকাল কম্পিউটারে। রিমোট কম্পিউটারের ফাইল বোঝাতে আমরা me@localhost: প্রেফিক্স ব্যবহার করছি।
ssh এর আরেকটি ফিচার হচ্ছে sftp অর্থাৎ সিকিউর এফটিপি। এটি এফটিপির মতই তবে নিরাপদ। আমরা রিমোট কম্পিউটারে sftp দিয়ে যোগাযোগ করতে পারি এভাবে:
Last updated