اطلاعیه

بستن
No announcement yet.

آموزش SSH کردن بدون پسورد با استفاده از public key در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    آموزش SSH کردن بدون پسورد با استفاده از public key در لینوکس

    SSH (مخفف Secure Shell) یک پروتکل متن باز و مورد اعتماد ترین پروتکلی است که برای ورود، لاگین یا اتصال به سرورهای ریموت (با استفاده از پسورد یا کلید) توسط برنامه ها و دستورات استفاده می شود. همچنین با استفاده از این روش برای انتقال فایل ها از کامپیوتری به کامپیوتر دیگر در شبکه با پروتکل SCP نیز میتوان استفاده کرد. در این مقاله ما به شما نشان خواهیم داد که چگونه در لینوکس RHEL/CentOS/Fedora و Debia/Ubuntu/Mint و ... با استفاده از ssh key ها (کلید) به سرورهای Linux بدون وارد کردن پسورد متصل شوید. لاگین بدون پسورد با کلید ssh، اعتماد بین سرورهای لینوکس را برای sync شدن و انتقال فایل ها را افزایش می دهد.

    نحوه اتصال به سرور لینوکسی بدون پسورد






    محیط عملیاتی من
    • سیستم کلاینت : 172.16.17.10
    • سرور یا هاست ریموت : 172.16.17.91

    اگر شما با تعدا دی سرور linux درگیر هستید، لاگین کردن بدون پسورد به سرور لینوکسی یکی از بهترین راه ها برای بک آپ گیری اتوماتیک با اسکریپت ها است، فایل ها را به طور همزمان با استفاده از scp و اجرای دستورات از راه دور اجرا کنید. در این مثال ما لاگین اتوماتیک بدون پسورد با SSH را از سیستم 172.16.17.10 با کاربر habili به سرور 172.16.17.91 با کاربر root را تنظیم خواهیم کرد.



    مرحله اول : ایجاد کلید احراز هویت (SSH-Key) در سیستم کلاینت

    ابتدا به سیستم کلاینت با آدرس 172.16.17.10 توسط کاربر habili لاگین کنید. سپس با استفاده از دستور زیر یک جفت public key (کلید SSH) ایجاد کنید.
    کد PHP:
    habili@RTP-Engine:~$ ssh-keygen -t rsa
    Generating 
    public/private rsa key pair.
    Enter file in which to save the key (/home/habili/.ssh/id_rsa):
    Created directory '/home/habili/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/habili/.ssh/id_rsa.
    Your public key has been saved in /home/habili/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:pXwSVDdhEhsw1UEI7kx/sl6WPOLolw69OH0l4z9BbDY habili@RTP-Engine
    The key
    's randomart image is:
    +---[RSA 2048]----+
    | ==*=Bo |
    | o ..*.. |
    | + o . |
    | = = E |
    | S + .+ . |
    | + =o.o |
    | ..+o*+ . |
    | .*+=o.. |
    | .++=. ... |
    +----[SHA256]-----+
    habili@RTP-Engine:~$ 
    نحوه ساخت کلید ssh در لینوکس










    مرحله دوم : ایجاد دایرکتوری .ssh در سرور یا هاست ریموت

    با استفاده از SSH و یوزر root به سرور ریموت (172.16.17.91) وصل شوید. ابتدا با استفاده از دستور ls -la بررسی کنید که دایرکتوری .ssh را در مسیر /root/ دارید؟

    نکته : در لینوکس دایرکتوری هایی که مخفی هستند، در ابتدای نام آنها یک نقطه "." نمایش داده میشود. دایرکتوری ssh هم مخفی است و در صورتیکه دستور ls را به تنهایی استفاده کنید شما قادر به دیدن این دایرکتوری نخواهید بود. به همین منظور جهت مشاهده دایرکتوری های مخفی از آپشن la را در کنار دستور ls استفاده میکنیم که دایرکتوری های مخفی (Hidden) را هم برای ما نشان دهد.
    کد PHP:
    # ls -la /root/ 
    اتصال به لینوکس با استفاده از کلید






    در صورتیکه دایرکتوری .ssh وجود داشت تغییری ندهید و به مرحله سوم بروید. اما اگر آن را نداشتید، با استفاده از دستور mkdir در مسیر /root دایرکتوری .ssh را ایجاد کنید و با استفاده از دستور chmod به دایرکتوری .ssh پرمیژن های لازم را بدهید.
    کد PHP:
    # mkdir -p .ssh
    # chmod 700 .ssh 


    مرحله سوم : آپلود کلیدهای ایجاد شده به سرور یا هاست ریموت

    با استفاده از دستور scp فایل id_rsa.pub را به دایرکتوری .ssh در سرور ریموت تان منتقل کنید. زمانیکه فایل id_rsa.pub به سرور ریموت منتقل میشود در آنجا ما میبایست اسم آنرا به authorized_keys تغییر نام دهیم. برای راحتی و تسریع در کارها، من در انتهای دستور authorized_keys را وارد کردم که هنگام انتقال فایل id_rsa.pub به سرور ریموت، همزمان اسم آنرا به authorized_keys تغییر نام دهد.
    کد PHP:
    scp .ssh/id_rsa.pub root@172.16.17.91:/root/.ssh/authorized_keys 
    اتصال بدون پسورد به سرور لینوکس با استفاده از ssh key







    اکنون، به سرور ریموت برگردید و با استفاده از دستور chmod به فایل authorized_keys پرمیژن 640 بدهید و بعد از آن سرویس sshd را ریستارت کنید. برای مشاهده پرمیژن فایل ها یا دایرکتوری ها شما میتوانید از دستور stat استفاده کنید.
    کد PHP:
    # chmod 640 .ssh/authorized_keys
    # systemctl restart sshd 
    لاگین کردن به ssh بدون استفاده از رمز عبور یا پسورد







    نکته : در صورتیکه، یوزرهای دیگری در سرور میباشد، و میخواهید برای آنها هم به صورت جداگانه لاگین بدون پسورد را اعمال کنید، میتوانید فایل authorized_keys که در بالا ایجاد کردیم را هم به دایرکتوری .ssh هر کاربر کپی کنید. مثلا برای کاربر sara شما میبایست فایل authorized_keys را به مسیر /home/sara/.ssh/ کپی کنید.




    مرحله چهارم : SSH کردن به سرور بدون وارد کردن Password

    از این مرحله به بعد شما میتوانید بدون وارد کردن پسورد به سرور یا هاست ریموت خود وارد شوید.
    کد PHP:
    ssh root@172.16.17.91 
    نحوه استفاده از ssh key برای ورود بدون پسورد به لینوکس






    نکته 1 : در مرحله اول زماینکه با استفاده از دستور ssh-keygen یک جفت کلید SSH ایجاد کردید، شما میتوانید فایل id_rsa را درون یک حافظه مانند USB یا هارد دیسک خود نگهداری کنید و هر زمان که نیاز شد از روی هر سیستمی که خواستید وصل شوید از این کلید استفاده کنید.

    نکته 2 : زمانیکه شما دستور ssh-keygen را وارد میکنید در هنگام ایجاد کلید از شما یک پسورد میگیرد. در صورتیکه چیزی وارد نکنید کلیدهای ایجاد شده بدون پسورد هستند. اما اگر برای کلیدهای ایجاد شده پسورد وارد کنید، زمانیکه شما قصد دارید از این کلیدها استفاده کنید از شما پسورد میگیرد و در صورتیکه پسورد درست را وارد کنید اجازه استفاده از کلیدها صادر میشود. این کار برای امنیت کلیدها مفید است و در صورتیکه کلید شما به هر دلیلی بدست شخص دیگری برسد قادر به استفاده از کلیدها نخواهد بود.
    آموزش لاگین به سرور لینوکس بدون پسورد یا رمز عبور










    مرحله پنجم : غیرفعال کردن احراز هویت با پسورد در سرور ریموت

    خب تا اینجای کار شما موفق شدید که تنظیمات لاگین به سرور بدون پسورد و با استفاده از کلید (SSH Key) را انجام دهید اما نکته ای که وجود دارد هنوز روی سرور شما احراز هویت یا لاگین با پسورد فعال است و همین موضوع باعث قرار گرفتن سرور شما در برابر حملات brute-force میشود.

    قبل از اینکه این مرحله را انجام دهید، مطمئن شوید که شما میتوانید به کاربر root (یا اکانت های دیگری که با آن به سرور وصل میشوید) بدون پسورد لاگین کنید. این مرحله لاگین/ورد بر اساس پسورد را غیرفعال میکند بنابراین حتما مطمئن شوید که دسترسی کاملی به سرور را دارید.

    به سرور ریموت خود لاگین کنید و فایل تنظیمات سرویس SSH را با استفاده از ادیتور متن دلخواه خود باز کنید.
    کد PHP:
    # vim /etc/ssh/sshd_config 
    سپس درون فایل بالا دنبال خط PasswordAuthentication بگردید و آنرا پیدا کنید. این خط ممکن است کامنت باشد، در صورتیکه با استفاده از # یا ; کامنت بود آنرا از کامنت خارج کنید و مقدار no را برابر آن بگذارید. این گزینه ورود به سرور لینوکس را با استفاده از یوزر و پسورد غیرفعال میکند.
    کد PHP:
    PasswordAuthentication no 
    نحوه غیرفعال کردن لاگین با یوزر و پسورد با سرور لینوکس






    بعد از اینکه تغییرات را ذخیره کردید، سرویس sshd را ریستارت کنید.
    کد PHP:
    # systemctl restart sshd.service 
    بعد از اینکه سرویس ssh با موفقیت restart شد، کانکشن کنونی خود را نبندید و یک کانکشن جدید با سرور ریموت ایجاد کنید که مطمئن شوید تنظیمات تان درست است و با موفقیت وصل میشوید. در صورتیکه مشکلی در اتصال وجود نداشت، شما میتوانید تمام کانکشن هایی که با سرور دارید را ببندید. اکنون سرویس ssh شما فقط به درخواست هایی که دارای کلید (Key) باشند پاسخ میدهد و در برابر لاگین با یوزر و پسورد پاسخی نمیدهد.


    همچنین توصیه میشود مطالعه کنید :

    امنیت سرورهای لینوکس CentOS (بخش اول)

    نحوه فعال کردن احراز هویت دو مرحله ای در لاگین SSH با استفاده از Google Authenticator

    ارسال ایمیل هشدار برای ادمین سیستم ها هنگام ssh کردن با یوزر root

    5 نمونه از بهترین روش ها برای امنیت و نگهداری سرورهای لینوکس

    غیرفعال یا فعال کردن دسترسی login یوزر root به SSH

    نمایش بنر هنگام SSH برای محافظت کردن از سرورهای لینوکس


    فراموش نکنید نظرات ارزشمند خود را با ما به اشتراک بگذارید. در صورتیکه این مقاله مفید بوده لطفا آنرا با دیگران به اشتراک بگذارید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-02-2021, 11:08 AM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

    #2
    عالی بود :280:
    او به من آموخت ، من به تو می آموزم و تو هم به او ...
    نگذار این چرخه قطع شود:279:

    کامنت


      #3
      خیلی ممنون .
      اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

      کامنت


        #4
        باسلام
        ممنون از مستند خیلی خوبتون
        یک سوال داشتم : من دو تا سرور لینوکس دارم که یکی از آنها git server هست و من از سرور دوم می خواهم با استفاده از ssh عملیات git clone را انجام بدهم . اما به من پیغام زیر را می دهد (من طبق مستندات شما ssh keygen را ایجاد کرده ام)
        ssh: git-upload-pack : command not found
        ممنون میشم راهنمایی کنید

        کامنت


          #5
          کامند
          git-upload-pack باید در ریموت سرور (که میخواهید بهش ssh کنید) نصب باشه.
          Instagram : https://www.instagram.com/iranlinuxforum

          Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

          Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
          Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
          Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
          LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

          Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

          کامنت

          درباره انجمن منطقه لینوکسی ها

          انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

          شبکه های اجتماعی

          ایمیل مدیریت

          Habili@linux-zone.org

          در حال انجام ...
          X