مقدمه
یکی از ابزارهای ضروری برای تسلط به عنوان یک مدیر سیستم SSH است. SSH یا Secure Shell پروتکلی است که برای ورود ایمن به سیستم های راه دور استفاده می شود. این رایج ترین راه برای دسترسی به سرورهای لینوکس از راه دور است. در این راهنما، نحوه استفاده از SSH برای اتصال به یک سیستم راه دور را مورد بحث قرار خواهیم داد.
نحو هسته
برای اتصال به یک سیستم راه دور با استفاده از SSH، از دستور ssh استفاده می کنیم. اگر از ویندوز استفاده می کنید، باید نسخه ای از OpenSSH را نصب کنید تا بتوانید از ترمینال ssh کنید. اگر ترجیح می دهید در PowerShell کار کنید، می توانید اسناد مایکروسافت را برای اضافه کردن OpenSSH به PowerShell دنبال کنید. اگر ترجیح می دهید یک محیط لینوکس کامل در دسترس داشته باشید، می توانید WSL، زیرسیستم ویندوز برای لینوکس را راه اندازی کنید، که به طور پیش فرض شامل ssh می شود. در نهایت، به عنوان گزینه سوم سبک، میتوانید Git را برای ویندوز نصب کنید، که یک محیط ترمینال bash ویندوز را ارائه میکند که شامل دستور ssh است. هر کدام از اینها به خوبی پشتیبانی می شوند و هر کدام را که تصمیم به استفاده از آن داشته باشید به اولویت شما بستگی دارد.اگر از مک یا لینوکس استفاده می کنید، از قبل دستور ssh را در ترمینال خود خواهید داشت.
ساده ترین شکل دستور این است:
ssh remote_host
remote_host در این مثال آدرس IP یا نام دامنه ای است که می خواهید به آن متصل شوید. این دستور فرض می کند که نام کاربری شما در سیستم راه دور با نام کاربری شما در سیستم محلی شما یکسان است.
اگر نام کاربری شما در سیستم راه دور متفاوت است، می توانید آن را با استفاده از این نحو مشخص کنید:
ssh remote_username@remote_host
پس از اتصال به سرور، ممکن است از شما خواسته شود هویت خود را با ارائه یک رمز عبور تأیید کنید. بعداً به نحوه تولید کلیدهایی برای استفاده به جای رمز عبور خواهیم پرداخت.
برای خروج از ssh و بازگشت به پوسته محلی خود، تایپ کنید:
exit
SSH چگونه کار می کند؟
SSH با اتصال یک برنامه مشتری به یک سرور ssh به نام sshd کار می کند.در قسمت قبل، ssh برنامه کلاینت بود. سرور ssh قبلاً روی remote_host که ما مشخص کردیم در حال اجرا بود.تقریباً در تمام محیط های لینوکس، سرور sshd باید به طور خودکار راه اندازی شود. اگر به هر دلیلی اجرا نمی شود، ممکن است لازم باشد به طور موقت از طریق یک کنسول مبتنی بر وب یا کنسول سریال محلی به سرور خود دسترسی داشته باشید.فرآیند مورد نیاز برای راه اندازی سرور ssh به توزیع لینوکسی که استفاده می کنید بستگی دارد.
در اوبونتو، می توانید سرور ssh را با تایپ کردن راه اندازی کنید:
sudo systemctl start ssh
این باید سرور sshd را راه اندازی کند و سپس می توانید از راه دور وارد شوید.
نحوه پیکربندی SSH
هنگامی که پیکربندی SSH را تغییر می دهید، تنظیمات سرور sshd را تغییر می دهید.در اوبونتو، فایل اصلی پیکربندی sshd در /etc/ssh/sshd_config قرار دارد.قبل از ویرایش از نسخه فعلی این فایل نسخه پشتیبان تهیه کنید:
sudo cp /etc/ssh/sshd_config{,.bak}
آن را با استفاده از nano یا ویرایشگر متن مورد علاقه خود باز کنید:
sudo nano /etc/ssh/sshd_config
شما می خواهید اکثر گزینه های این فایل را به حال خود رها کنید. با این حال، چند مورد وجود دارد که ممکن است بخواهید به آنها نگاهی بیندازید:
Port 22
اعلان پورت مشخص می کند که سرور sshd برای اتصالات به کدام پورت گوش می دهد. بهطور پیشفرض، این 22 است. احتمالاً باید این تنظیم را به حال خود رها کنید، مگر اینکه دلایل خاصی برای انجام این کار داشته باشید. اگر پورت خود را تغییر دهید، در ادامه نحوه اتصال به پورت جدید را به شما نشان خواهیم داد.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
اعلانهای کلید میزبان مشخص میکنند که کجا به دنبال کلیدهای میزبان جهانی بگردیم. بعداً درباره چیستی کلید میزبان بحث خواهیم کرد.
SyslogFacility AUTH
LogLevel INFO
این دو مورد نشان دهنده سطح ورود به سیستم است که باید رخ دهد.
اگر با SSH مشکل دارید، افزایش میزان ورود به سیستم ممکن است راه خوبی برای کشف مشکل باشد.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
این پارامترها برخی از اطلاعات ورود را مشخص می کنند.
LoginGraceTime مشخص می کند که چند ثانیه اتصال را بدون ورود موفقیت آمیز حفظ کنید.ممکن است ایده خوبی باشد که این زمان را فقط کمی بیشتر از مدت زمانی که برای ورود به سیستم معمولی لازم است تنظیم کنید.PermitRootLogin انتخاب می کند که آیا کاربر ریشه مجاز به ورود به سیستم است یا خیر.در بیشتر موارد، زمانی که یک حساب کاربری ایجاد کردهاید که به امتیازات بالا (از طریق su یا sudo) دسترسی دارد و میتوانید از طریق ssh وارد شوید، باید به no تغییر داده شود تا خطر دسترسی root به سرور شما به حداقل برسد. .strictModes یک محافظ ایمنی است که اگر فایل های احراز هویت برای همه قابل خواندن باشد، از تلاش برای ورود به سیستم خودداری می کند.این از تلاش برای ورود به سیستم زمانی که فایل های پیکربندی ایمن نیستند جلوگیری می کند.
X11Forwarding yes
X11DisplayOffset 10
این پارامترها قابلیتی به نام X11 Forwarding را پیکربندی می کنند. این به شما امکان می دهد رابط کاربری گرافیکی یک سیستم از راه دور (GUI) را در سیستم محلی مشاهده کنید. این گزینه باید در سرور فعال شود و در هنگام اتصال با گزینه -X با مشتری SSH داده شود. پس از انجام تغییرات، فایل را ذخیره و ببندید. اگر از nano استفاده می کنید، Ctrl+X را فشار دهید، سپس وقتی از شما خواسته شد، Y و سپس Enter را فشار دهید. اگر تنظیماتی را در /etc/ssh/sshd_config تغییر دادید، مطمئن شوید که سرور sshd خود را مجدداً بارگیری کرده اید تا تغییرات خود را اعمال کنید:
sudo systemctl reload ssh
شما باید تغییرات خود را به طور کامل آزمایش کنید تا مطمئن شوید که مطابق انتظار شما عمل می کنند.ممکن است ایده خوبی باشد که در حین ایجاد تغییرات، چند جلسه ترمینال باز باشد. این به شما امکان می دهد در صورت لزوم پیکربندی را بدون قفل کردن خود بازگردانید.
نحوه ورود به SSH با کلیدها
اگرچه ورود به سیستم راه دور با استفاده از رمزهای عبور مفید است، تنظیم احراز هویت مبتنی بر کلید سریعتر و ایمن تر است.
احراز هویت مبتنی بر کلید چگونه کار می کند؟
احراز هویت مبتنی بر کلید با ایجاد یک جفت کلید کار می کند: یک کلید خصوصی و یک کلید عمومی. کلید خصوصی روی دستگاه مشتری قرار دارد و ایمن و مخفی نگه داشته می شود. کلید عمومی می تواند به هر کسی داده شود یا در هر سروری که می خواهید به آن دسترسی داشته باشید قرار داده شود. هنگامی که سعی می کنید با استفاده از یک جفت کلید متصل شوید، سرور از کلید عمومی برای ایجاد پیامی برای رایانه مشتری استفاده می کند که فقط با کلید خصوصی قابل خواندن است. سپس کامپیوتر سرویس گیرنده پاسخ مناسب را به سرور ارسال می کند و سرور متوجه می شود که مشتری قانونی است. این فرآیند پس از پیکربندی کلیدهای خود به طور خودکار انجام می شود.
نحوه ایجاد کلیدهای SSH
کلیدهای SSH باید در رایانه ای که می خواهید از آن وارد شوید ایجاد شود. این معمولا ماشین محلی شماست.
موارد زیر را در خط فرمان وارد کنید:
ssh-keygen -t rsa
ممکن است از شما خواسته شود که یک رمز عبور برای خود فایل های کلیدی تنظیم کنید، اما این یک عمل نسبتاً غیر معمول است و برای پذیرش پیش فرض ها باید enter را از طریق فرمان ها فشار دهید. کلیدهای شما در ~/.ssh/id_rsa.pub و ~/.ssh/id_rsa ایجاد خواهند شد.
با تایپ کردن کد زیر آن را به دایرکتوری .ssh تغییر دهید:
cd ~/.ssh
به مجوزهای فایل ها نگاه کنید:
ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub
همانطور که می بینید فایل id_rsa فقط برای مالک قابل خواندن و نوشتن است. این به مخفی نگه داشتن آن کمک می کند.
با این حال، فایل id_rsa.pub را می توان به اشتراک گذاشت و دارای مجوزهای مناسب برای این فعالیت است.
نحوه انتقال کلید عمومی به سرور
اگر در حال حاضر به سروری دسترسی مبتنی بر رمز عبور دارید، می توانید کلید عمومی خود را با صدور این دستور در آن کپی کنید:
ssh-copy-id remote_host
این یک SSH را شروع می کند. پس از وارد کردن رمز عبور، کلید عمومی شما را در فایل کلیدهای مجاز سرور کپی می کند، که به شما امکان می دهد دفعه بعد بدون رمز ورود وارد شوید.
گزینه های سمت کلاینت
تعدادی دستور اختیاری وجود دارد که می توانید هنگام اتصال از طریق SSH ارائه دهید. برخی از اینها ممکن است برای مطابقت با تنظیمات موجود در پیکربندی sshd میزبان راه دور لازم باشد.
به عنوان مثال، اگر شماره پورت را در پیکربندی sshd خود تغییر دادید، باید با تایپ کردن، آن پورت را در سمت مشتری مطابقت دهید:
ssh -p port_number remote_host
اگر میخواهید فقط یک فرمان را روی یک سیستم راه دور اجرا کنید، میتوانید آن را بعد از میزبانی مانند زیر مشخص کنید:
ssh remote_host command_to_run
شما به دستگاه از راه دور متصل می شوید، احراز هویت می کنید و دستور اجرا می شود.
همانطور که قبلاً گفتیم، اگر X11 Forwarding در هر دو رایانه فعال باشد، میتوانید با تایپ کردن زیر به آن عملکرد دسترسی پیدا کنید:
ssh -X remote_host
به شرط داشتن ابزارهای مناسب بر روی رایانه، برنامه های رابط کاربری گرافیکی که در سیستم راه دور استفاده می کنید اکنون پنجره خود را در سیستم محلی شما باز می کنند.
غیرفعال کردن احراز هویت رمز عبور
اگر کلیدهای SSH را ایجاد کرده اید، می توانید با غیرفعال کردن احراز هویت فقط با رمز عبور، امنیت سرور خود را افزایش دهید. به غیر از کنسول، تنها راه ورود به سرور شما از طریق کلید خصوصی است که با کلید عمومی که روی سرور نصب کرده اید جفت می شود.
به عنوان روت یا کاربر با امتیازات sudo، فایل پیکربندی sshd را باز کنید:
sudo nano /etc/ssh/sshd_config
خطی را که احراز هویت رمز عبور میخواند، پیدا کنید و با حذف # پیشرو، آن را حذف کنید. سپس می توانید مقدار آن را به no تغییر دهید:
PasswordAuthentication no
دو تنظیمات دیگر که نیازی به تغییر ندارند (به شرطی که قبلاً این فایل را اصلاح نکرده باشید) PubkeyAuthentication و ChallengeResponseAuthentication هستند. آنها به طور پیش فرض تنظیم شده اند و باید به صورت زیر خوانده شوند:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
پس از انجام تغییرات، فایل را ذخیره و ببندید.
اکنون می توانید دیمون SSH را مجدداً بارگیری کنید:
sudo systemctl reload ssh
احراز هویت رمز عبور اکنون باید غیرفعال باشد و سرور شما باید فقط از طریق احراز هویت کلید SSH قابل دسترسی باشد.
نتیجه
یادگیری روش SSH برای هر یک از تلاشهای محاسبات ابری آینده شما بسیار مفید خواهد بود. همانطور که از گزینه های مختلف استفاده می کنید، عملکردهای پیشرفته تری را کشف خواهید کرد که می تواند زندگی شما را آسان تر کند. SSH محبوبیت خود را حفظ کرده است زیرا ایمن، سبک وزن و در موقعیت های مختلف مفید است.