آموزش ایجاد کلید ssh key در لینوکس

با این آموزش، می توانیم کلیدهای عمومی و خصوصی ssh key بسازیم و با کلیدهای ساخته شده بدون وارد کردن یوزرنیم و پسورد، به محیط ssh لاگین کنیم .
فهرست عناوین:
با کلیک بر روی هر عنوان، به همان قسمت از مقاله منتقل می شوید
معرفی ssh key در سرور
مزایای استفاده از ssh keys
روش و مراحل ssh keys
نمایش کلیدهای دیگر بر روی کلاینت لینوکس
نصب openssh برای استفاده از ssh
دستور ایجاد کلید به همراه تعیین نام و تعریف کامنت برای هر کلید
انتقال کلید عمومی به سرور در لینوکس
ایجاد کلید ssh در ویندوز (ویندوز 10 و 11)
ایجاد کلید ssh در ویندوز با استفاده از putty
خطای Server refused our key در زمان استفاده از putty
معرفی ssh keys
عموما برای اتصال ssh در سرورها، نیاز به ورود به یوزرنیم و پسورد می باشد که در هر بار ورود به سرور باید انجام شود.
این کار علاوه بر اینکه زمان بر و آزار دهنده هست، اگر تعداد سرورهای زیاد باشد مشکل ساز می شود.
از طرف دیگر، اگر سرور به اینترنت متصل باشد، همیشه حملات بروت فورس بر روی سرور وجود دارد و امنیت سرور همیشه در خطر می باشد.
در برابر روش passwordbase authentication ، روش keybase authentication وجود دارد که اتصال به ssh از طریق کلید انجام می شود.
در این روش یک جفت کلید در سمت کلاینت ساخته می شود که با هم pair یا جفت هستند.
کلید خصوصی در سمت کلاینت باقی می ماند و کلید عمومی بر روی سرور قرار می گیرد.
در زمان اتصال کلاینت به سرور این دو کلید با هم مطابقت داده می شوند و در صورت مطابقت، دسترسی به ssh مجاز و فعال می شود.
مزایای استفاده از ssh keys
از مزایای این روش این است که با یک بار لاگین و احراز، دیگر نیاز به وارد کردن یوزر و پسورد نیست.
همینطور می توان لاگین با پسورد را به طور کامل غیرفعال کرد که امنیت سرور را افزایش می دهد.
با غیرفعال کردن لاگین با پسورد، جلوی حملات brute force گرفته می شود.
همینطور امکان استفاده از ابرازها و اسکریپت های اتوماسیون مانند Ansible فراهم می شود که بدون نیاز به یوزرنیم و پسورد ،امکان بروزرسانی ها و دیپلوی ها بر روی سرور به صورت زمان بندی شده فراهم می شود.
روش و مراحل ساخت کلید
ssh-keygen نام یوتیلیتی هست که در سیستم کلاینت کلیدهای توسط آن ساخته می شود.
ssh-keygen
در سیستم های یونیکس بیس مثل لینوکس و مک، در ترمینال با دستور زیر کلید ها ایجاد می شوند.
ssh-keygen -t rsa
ssh-keygen -t rsa b 4096
آپشن t- نوع کلیدی که ساخته می شود را مشخص می کند که به صورت پیش فرض RSA می باشد.
با آپشن b- بیت سایز کلید تعیین می شود که می تواند 1024, 2048 , 4096 باشد.
در سیستم عامل ویندوز ممکن است نوع تنظیمات و تگ های دستور متفاوت باشد و دقیقا همان امکانات و تنظیمات که در لینوکس قابل انجام است در ویندوز اجرا نشود و خطای Too many arguments بدهد.
محل ذخیره شدن کلیدها در فولدری به نام ssh. در روت اصلی می باشد.
در ویندوز این کلیدها در فولدر کاربر ویندوز در درایور سیستم عامل عموما درایو C ذخیره می شود و با مراجعه به آدرس c:\users\pws می توانید دو کلید عمومی و خصوصی ساخته شده را مشاهده کنید .
* به جای pws نام کاربری ویندوز شما جایگزین می شود.
نمایش کلیدهای دیگر بر روی کلاینت لینوکس
اگر بخواهیم مشخص کنیم روی سیستم کلاینت ما چه تعداد کلید وجود دارد این دستور رو در ترمینال اجرا می کنیم
ls -l ~/.ss
total 0
اگر مقدار total 0 برگردانده شود، یعنی کلیدی بر روی سیستم ما وجود ندارد.
نصب openssh برای استفاده از ssh
با زدن دستور مقابل می توانیم ورژن openssh را مشاهده کنیم
ssh -V
* در دستور بالا ،حرف V بزرگ می باشد.
در سیستم عامل ابونتو به صورت پیش فرض openssh نصب نیست و باید نصب شود.
در صورتی که ssh بر روی سرور نصب نباشد با دستورات زیر در سرور باید نصب شود:
در اوبونتو با دستور زیر قابل نصب می باشد.
sudo apt install openssh-server
در آلما لینوکس از دستور زیر برای نصب openssh استفاده می کنیم. (از قبل نصب می باشد با این حال در صورت نیاز از دستور زیر می توان استفاده کرد.)
sudo dnf install openssh-server
برای بررسی نصب ssh بر روی سرور دستور زیر را وارد می کنیم.
sudo systemctl status sshd
استارت کردن ssh در صورتی که فعال نبود
sudo systemctl start sshd
برای ران شدن ssh در زمان بوت این دستور را وارد می کنیم.
sudo systemctl enable sshd
ssh username@192.168.170.26
username یوزر سرور است
192.168.170.26 آی پی سرور است
همانطور که گفته شد کلید عمومی و خصوصی در سمت کلاینت ایجاد می شود.
کلید عمومی بر روی سرور قرار می گیرد و کلید خصوصی در سیستم کلاینت باقی می ماند.
دستور ایجاد کلید به همراه تعیین نام و تعریف کامنت برای هر کلید
ssh-keygen -t ed25519 -f ~/.ssh/[filename] -C "[useful comment]"
-t type like rsa,dsa,ecdsa, نوع الگوریتم برای کد کردن هست
-f ~/.ssh/[filename]
محل ذخیره شدن کلیدها و نام آنها را مشخص می کند
اگر سرورهای متعدی داشته باشیم بهتر است که نام کلید هایی که ایجاد می کنیم برای هر سرور مشخص باشد تا در صورت بروز مشکل قابل بررسی باشد.
-C "[useful comment]"
انتقال کلید عمومی به سرور
ssh-copy-id -i .ssh/keyname.pub username@server_ip
keyname.pub نام فایل کلید عمومی می باشد
username نام یوزر سرور می باشد
server_ip به جای آن باید آی پی سرور وارد شود
با زدن دستور بالا ، سرور از ما درخواست پسورد می کند و بعد از وارد کردن پسورد، پیامی مبنی بر اضافه شدن کلید بر روی سرور نمایش داده می شود.
number of key(s) added : 1
بعد از وارد کردن دستور ، سیستم درخواست ست کردن passphares می کند که به صورت اختیاری است که پیشنهاد می شود حتما وارد شود و در جای دیگر ذخیره شود.
در زمان وارد کردن passphares چیزی بر روی صفحه نمایش داده نمی شود.
بعد از ایجاد کلیدها با زدن دستور ls .ssh لیست کلیدهای ایجاد شده نمایش داده می شود.
passphares فقط یک بار در زمان اتصال ssh نیاز است که وارد شود.
در دفعات بعد می توانیم با دستور زیر و بدون وارد کردن یوزرنیم و پسورد وارد محیط ssh شویم
بعد از انجام تغیرات اگر سیستمی کلید خصوصی نداشته باشد و قصد اتصال ssh به سرور داشته باشد خطای premission denide دریافت می کند
ایجاد کلید ssh در ویندوز (ویندوز 10 و 11)
برای ای کار ابتدا وارد محیط کامند لاین ویندوز می شویم . کلید win + R را می زنیم در کادر باز شده cmd را تایپ می کنیم و روی ok کلیک می کنیم.
برای ایجاد کلید ها در محیط کامند لاین دستور ssh-keygen را اجرا می کنیم .
در صورتی که openssh در ویندوز فعال نبود، برای فعال کردن روی دکمه start ویندوز کلیک می کنیم.
عبارت optional futures را تایپ می کنیم تا این منو برای ما نمایش داده شود.
با کلیک بر روی آن، صفحه جدیدی باز می شود که در اولین گزینه Add an optional future دکمه ای به نام view futures وجود دارد روی آن کلیک می کنیم و
از لیست نمایش داده شده ، openssh را انتخاب می کنیم تا نصب شود.
بعد از اینکه openssh فعال شد ،مجدد وارد محیط کامندلاین ویندوز می شویم و دستور ssh-keygen را وارد می کنیم.
این بار پیام دیگری مطابق تصویر زیر نمایش داده می شود.
1- مسیر ذخیره شدن کلیدها مشخص شده است که به صورت پیش فرض در فولدر به نام کاربری ویندوز می باشد. (در مثال بالا کدها در فولدر
C:\Users\karimeh ایجاد می شوند.
2و3- در این قسمت می توانیم برای کلیدهای خود رمز تعریف کنیم که حتما باید در جایی ذخیره و یادداشت کنیم . (این مورد اختیاری هست و می تواند خالی گذاشت)
3- کلید خصوصی ما هست
4- کلید عمومی ایجاد شده می باشد که دارای پسوند pub هست.
کلید خصوصی پسوند خاصی ندارد و با عبارت زیر شروع می شود .
-----BEGIN OPENSSH PRIVATE KEY-----
کلبد عمومی پسوند pub دارد که مخفف public به معنی عمومی است و با عبارت ssh-rsa شروع می شود.
ssh-rsa
ایجاد کلید ssh در ویندوز با استفاده از putty
در لحظه نگارش این مقاله ورژن 0.79 می باشد . (دانلود فایل نصبی برای ویندوز 64 بیتی)
برای دانلود برای سایر سیستم عامل ها و یا سایر ورژن ها، به صفحه وب سایت رسمی putty مراحعه بفرمایید.
در زمان نصب putty، اپلیکیشن PuTTYgen هم نصب می شود. که وظیفه آن تولید جفت کلید عمومی و خصوصی می باشد.
1- در این قسمت می توانیم تعیین کنیم که کلید ساخته شود و یا اینکه کلیدی که قبلا ساخته ایم را با کلیک بر روی دکمه load ، بارگزاری کنیم.
در این پست ما قصد ایجاد کلید جدید را داریم .
2- در قسمت Parameters ما می توانیم نوع کلید خود را مشخص کتیم که به صورت پیش فرض بر روی RSA تنظیم می باشد.
و در کادر مقدار بیت کلید هم به صورت پیش فرض 2048 نمایش داده می شود که کلید ساخته شده 2048 بیتی می باشدو نیاز به تغییر نیست.
3- با کلیک بر روی دکمه Generate ، صفحه جدید برای ایجاد کلید باز می شود .
در این صفحه از ما خواسته می شود که نشانگر ماوس را بر روی صفحه حرکت دهیم تا یک رشته تصادفی ساخته شود و بعد از انجام این کار، کلید ما ساخته خواهد شد.
1- کلید عمومی RSA (در روی کلاینت باقی می ماند). این کلید را کپی می کنیم و در یک ادیتور متن مثل نوت پد و یا ++notepad ذخیره می کنیم.
2- key fingerprint مربوط به کلید ما می باشد.
3- در این قسمت می توانیم یک کامنت برای کلید ایجاد شده وارد کنیم . اگر چندین سرور داشته باشیم این کامنت به ما کمک می کند که تشخیص دهیم این این کلید برای کدام سرور است . بعد از هر بار لاگین این کامنت برای ما نمایش داده می شود.
4- کلید passphares اختیاری می باشد اما برای امنیت بیشتر پیشنهاد می شود این قسمت تکمیل شود. در زمان لاگین یک بار از ما پرسیده می شود و نیاز است که وارد شود.
5- با کلیک بر روی هر کدام از این دکمه ها ، فایل های کلید دانلود می شوند.
برای لاگین به سرور با استفاده از putty، بعد از لاگین به سرور، با دستور
cd .ssh
به فولدر ssh. می رویم.
دستور مقابل را برای ویرایش فایل authorized_keys وارد می کنیم
nano authorized_keys
فایل در محیط ادیتور nano برای ما باز می شود .
کلید عمومی که در puttygen ساخته بودیم را در این فایل کپی می کنیم و ctrl+x را می زنیم. در زمان خروج از ما پرسیده می شود که فایل ذخیره شود یا خیر؟
دکمه y را به نشانه تایید می زنیم و مجدد پیام نمایش داده می شود که این فایل جایگزین فایل قبلی می شود که تایید می کنیم
در این مرحله کلید عمومی ما در فایل مخصوص در سرور اضافه شده است .
در تنظیمات سمت چپ پاتی به منوی زیر می رویم :
category/conection/SSH/Auth/credentials
بر روی دکمه browse کلیک می کنیم و محل ذخیره فایل کلید خصوصی را در نرم افزار putty در فیلد روبرو دکمه قرار می دهیم و به قسمت session برگشته و تغییرات را ذخیره می کنیم
بر روی دکمه save کلیک می کنیم تا تغییرات انجام شده و کلید خصوصی اضافه شده در پروفایل تنظیمات ( به طور مثال pws در مثال بالا) ذخیره شود.
1- بعد از ذخیره کردن ، برای لاگین کافی است روی گزینه pws رفته و دکمه load کلیک کنیم و روی open بزنیم تا بدون پسورد به محیط ssh لاگین کنیم .
2- حتما توجه داشته باشید که یوزر سرور به همراه علامت @ قبل از آی پی باید اضافه شده باشد در غیر اینصورت، چون یوزر مشخص نشده در زمان لاگین باید یوزر را وارد کنیم .
3- با کلیک بر روی open نرم افزار putty بدون نیاز به یوزرنیم و پسورد به سرور لاگین می کند و آماده واردکردن دستورات ssh می شود.
کامنتی که در زمان ایجاد کلیدها ایجاد کرده بودیم در زمان لاگین برای ما نمایش داده می شود.
اقدامات لازم برای دسترسی ssh در سمت سرور
در سمت سرور نیاز است که فولدر ssh. که محل نگهداری کلیدهای عمومی است ساخته شود .
با دستورات زیر این فولدر را در فولدر روت اصلی می سازیم و دسترسی آن را روی 700 قرار می دهیم
mkdir -p ~/.ssh
chmod 700 ~/.ssh
اگر سرور ما کاربران دیگری هم داشته باشد ، آنها هم باید این دستور را وارد کنند تا این فولدر در فولدر home پروفایل آنها ساخته شود.
بعد از انجام این کار این دستور را در کلاینت اجرا می کنیم
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
به جای یوزر نام کاربری سرور را وارد می کنیم . اگر کاربر روت باشیم کلمه root را جایگزین می کنبم
با دستور whoami نام یوزر فعلی در سرور نمایش داده می شود.
به جای server ، آی پی سرور را وارد می کنیم .
برای مشاهده آی پی سرور دستور زیر را در ترمینال وارد می کنیم .
ip a
و یا
hostname -I
به جای id_rsa.pub
، نام کلیدی عمومی خود را وارد می کنیم.
به 3 طریق می توان به سرور ssh زد :
با استفاده از ip
با استفاده از hostname
با استفاده domain name
زمانی که دستور ssh-cophy-id اجرا می شود و کلید به سرور منتقل شد و به سرور اضافه شد. یک فایل به نام authorized_keys ایجاد می شود که کلید عمومی ما در آن قرار می گیرد.
در صورتی که در زمان تهیه کلیدها، مقدار passphrase را وارد کرده بودیم، در هر بار لاگین به سرور باید این مقدار را وارد کنیم . اگر این فیلد را خالی گذاشته بودیم در هر بار لاگین نیاز به وارد کردن چیزی نیست و به صورت خودکار لاگین می شود.
غیرفعال کردن لاگین با پسورد در سرور (Disable password authentication)
برای غیرفعال کردن کامل ورود با پسورد در سمت سرور می توانیم تغییرات زیر را انجام دهیم
sudo nano /etc/ssh/sshd_config
از حالت کامنت خارج کرده و مقدار آن را به no تغییر می دهیم
PasswordAuthentication no
sudo systemctl reload sshd
روش سریع تر برای ssh
nano .ssh/config
در فایل باز شده مقادیر را به صورت زیر وارد می کنیم و ذخیره می کنیم
Host pws_new
HostName 195.214.235.42
IdentityFile ~/.ssh/pws_new
User root
تو رفتگی در زمان وارد کردن دستورات باید رعایت شود
بعد از ذخیره شدن دستور ،برای استفاده از دستور ssh فقط کافیست که دستور به صورت زیر تایپ شود
ssh pws_new
خطای Server refused our key در زمان استفاده از putty
ممکن است که دسترسی فایل ها و فولدر درست نباشد که دستورات زیر را در خط فرمان سرور اجرا می کنیم
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown $USER:$USER .ssh -R
نکته دیگر این است که کلید عمومی که وارد authorized_keys می شود باید حتما در یک لاین باشد و هیچ فاصله در ابتدا و انتهای فایل وجود نداشته باشد.
در صورتی که در فعالسازی ssh در سرور هر گونه سوال و یا ابهامی وجود داشت می توانید تیکت بزنید (ارسال تیکت)
یا اگر تجربه ای در این زمینه داشتید در بخش نظرات مطرح بفرمایید .

افزایش امنیت وردپرس با Authentication unique keys and salts

آموزش ایجاد کلید ssh key در لینوکس

آموزش فعالسازی SSL در هاست

ساخت دیتابیس مونگو دی بی و اتصال به studio 3t

فعال کردن extension های php در cPanel

جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس

مشاهده لاگ های سایت در Raw Access سی پنل

معرفی سرویس Webalizer در سی پنل

معرفی سرویس آمار سی پنل Awstats

معرفی سرویس Virus Scanner در سی پنل

معرفی قابیلت Track DNS در سرویس های سی پنل

معرفی بخش BoxTrapper در سی پنل

قابلیت Greylisting در سی پنل

آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل

ایجاد رکوردهای DNS در ZoneEditor سی پنل

بررسی Bandwidth در سرویس سی پنل

کد EPP چیست

جلوگیری از دریافت ایمیل های خاص در سی پنل

آموزش ایجاد ساب دامنه در هاست سی پنل

آموزش مدیریت فضای ایمیل سی پنل

آموزش رفع ارور 502 Bad gateway

افزایش امنیت وردپرس با Authentication unique keys and salts

آموزش ایجاد کلید ssh key در لینوکس

نصب پکیج های پایتون از مخازن جایگزین pip

راهنمای رفع خطای ENOENT در نود جی اس (Nodejs Enoent eror)

راهنمای تنظیمات smtp برای لاراول

راهنمای استفاده از مونگو دی بی در پایتون – MongoDB in Python

چرخه حیات دامنه های بین المللی و آی آر

راهنمای حذف و خالی کردن کش در لاراول

کد تخفیف هفتگی برای خرید های جدید
