موثرتر کار کنیم - این قسمت ssh ِ ساده‌تر!

مقدمهاس‌اس‌اچ از اون چیزاس که همه جا هست و همیشه خِرِه همه‌مون رو میگیره. اگه شما هم مثل من هر‌روز مجبورید به سرور‌های مختلفی login و logout کنید، این مطلب قرار کمکتون کنه که زندگیتون راحت‌تر شه!تو این قسمت می‌خوایم راجعبه این صحبت کنیم که چطور کار با اس‌اس‌اچ رو ساده‌تر از قبل کنیم.شیرجه توی اصل مطلبخب تصور کنیم شما یک سروری دارید که آی‌پیش هست 10.73.71.24 و نام کاربری هم قرارِ بهش اس‌‌اس‌اچ بزنیم rostam هست، فرض کنیم برای دلایلِ مثلاً! امنیتی تصمیم گرفتید که از پورت پیش‌فرض استفاده نکنید و پورتش رو گذاشتید 2000 درنتیجه واسه اس‌اس‌اچ زدن بهش باید این دستور رو تایپ کنید:ssh rostam@10.73.71.24 -p 2000password: *************همونطور که می‌بینید شما باید هربار پسوردتون رو وارد کنید که از نظر امنیتی خیلی چیزِ جالبی نیست. برای اینکه هربار اینکارُ انجام ندید، کافیه یک جفت کلید (عمومی و خصوصی) تولید کنید و کلید عمومی خودتون رو روی سرور مورد نظر کپی کنید و یک سری ‌کارها مثل تغییر حق دسترسی به کلید و ... انجام بدید. اما نکته اینجاس که این یکسری از کارهارو هم یه برنامه ای با خود ssh نصب می‌شه به اسم ssh-copy-id که اونارو واسمون انجام میده.پس تنها کاری که شما باید بکنید اینه که کلیدهاتون رو تولید کنید و به ssh-copy-id بگید برو بقیه کارو واسم انجام بده ;-)چطور کلیدهامون رو تولید کنیم؟ به راحتی کافیه دستور زیر رو وارد کنید که داره میگه واسه من یک جفت کلید از نوع rsa تولید کن:ssh-keygen -t rsaدستور بالا سه تا سوال از شما میپرسه که میتونید به راحتی سه تا Enter پشت سرهم بزنید هیچ اتفاقی نمیفته!حالا که همه چیز ساخته شده میریم سراغ رفیقمون ssh-copy-id، تنها کاری که لازمه بکنید اینه که یکبار با این دستور به سرور مورد نظر لاگین کنید و خودش بقیه کارهارو انجام میده واستون:ssh-copy-id rostam@10.73.71.24 -p 2000 # ssh with ease :-)خب تا اینجای کار دیگه لازم نیست واسه این سرور هی پسورد رو وارد کنیم. همین کارو واسه بقیه سرورهاتون می‌تونید انجام بدید یعنی فقط با ssh-copy-id یکبار بهشون لاگین کنید(یک جفت کلید واسه سیستم ما هستش و نیاز به تولید به ازای هر سرور نیست این کلید‌ها توی مسیر ssh./~ وجود دارند.).اگه کسی هست که دوست داره بدونه ssh-copy-id داره چیکار میکنه، کافیه این لینک رو دنبال کنه!ممکنِ یکی بگه به جای اینکه هربار این دستور طولانی رو بزنیم، بریم واسش یه Alias تعریف کنیم، یه چیزی مثل پایین:$ alias dev='ssh rostam@10.73.71.24 -p 2000'$ dev # To connectاین ایده، خیلی بد نیست! اما خب امروز می‌خوایم یه چیز باحال‌تر بهتون معرفی کنم.~/.ssh/configاس‌اس‌اچ یک یک فایل کانفیگ داره که با این فایل کانفیگ نه تنها نیازی به تعریف کردن Alias ندارید،‌ بلکه خیلی کارِ باحال‌تری باهاش میشه کرد. مسیر این فایل همانطور که گفتیم ssh/config./~ هست. خب بریم سراغ اینکه اولین سرورمون رو بهش اضافه کنیم. کافیه این فایل رو باز کنیم و مشخصات سرور و پارمترهای سرورمون رو بهش بدیم:# contents of $HOME/.ssh/configHost rostam hostname 10.73.71.24 port 2000 user rostamحالا اگه می خوایم بهش وصل شیم کافیه بنویسیم(یادتون باشه اینجا tab-completion هم پشتیبانی میشه).$ ssh rostamنکته ای که باید یادتون باشه، توی این فایل کانفیگ ترتیب هاست‌ها مهمه یعنی اگه دوبار فایل‌های کانفیگ مختلف واسه یک سرور بنویسید اس‌اس‌اچ اونی که بالاتره رو میخونه. این فایل کانفیگ یک امکان خیلی خوب بهمون میده و اون اینه که می‌تونیم یک سری چیزها که واسه اکثر سرورها مشترکه رو یکجا بنویسیم. مثلا من بهش گفتم: واسه همه سرور اجازه فوروارد X (رابط گرفیکی) رو به صورت پیش‌فرض بده، نام‌کاربری پیش‌فرضم root باشه، پورت ۲۲، پروتکل نسخه ۲ و از من برای چک کردن کلید سوال نپرس!Host * forwardx11 yes forwardx11trusted yes user root port 22 protocol 2 stricthostkeychecking noالبته همه اینها درصورتی اعمال میشه که توی اون کانفیگ سرور این پارامترها مشخص نشده باشند. یعنی با کانفیگ پایین، دیگه وقتی به dev وصل میشم پورتم ۲۰۰۰ هست نه ۲۲ و ... .Host rostam hostname 10.73.71.24 port 2000 user rostamHost * forwardx11 yes forwardx11trusted yes user root port 22 protocol 2 stricthostkeychecking noاگه هرکجا نیاز به کمک داشتید که فلان پارامتر چیکار می‌کنه یادتون باشه man ssh_config رو بخونید،‌ همه‌چی اونجا به صورت کامل توضیح داده شده.ممکنه همیشه باز کردن این فایل و ویرایش اون یکم حوصله سربر باشه،‌ یه پکیجِ پایتونی هست به اسم storm که این کارو واسه ما راحت‌تر می‌کنه. تنها عیبی که این برنامه داره اینه همیشه میره آخره فایل تنظیمات رو اضافه میکنه، اون موقع اگه از * Host استفاده کرده باشید، عملاً ممکنه به خاطر تصادم پارامتر، بعضی از پارامتر‌های خودِ هاست نادیده گرفته بشه.نتیجه گیریهدف من از گفتن این مطلوب این بود که اگه تایپ کردنِ پسورد واستون سخته،‌ لزومی نداره برید پسوردهای کوتاه یا غیرپیچیده انتخاب کنید مثل a یا ۱۲۳۴ بذارید،‌تا هردفعه اذیت نشید. مطمئن باشید واسه هر مساله‌ای راه‌حلی وجود داره. امیدوارم که از این مطلب خوشتون اومده باشه. در ادامه می‌خوام بیشتر برم راجعبه پایتون صحبت کنم ...از اینجا کجا بریماگه جزء کسایی هستید که دوست دارید بیشتر یاد بگیرید،‌ لینک پایین رو برای شما گذاشتم، که راجعبه یک سری اصول امنیتی و best practice‌ها توی اس‌اس‌اچ صحبت می‌کنه :-) https://www.ssh.com/ssh/copy-id