Secure Shell که معمولاً با نام SSH شناخته می شود، یک روش فوق امن برای صحبت با رایانه های راه دور است که به آن سرور می گویند. این مانند یک تونل مخفی در اینترنت است که مکالمات شما را امن و خصوصی نگه می دارد. تصور نمایید در حال ارسال نامه هستید و به جای ارسال آشکار، آن را در یک پاکت جادویی قرار می دهید که فقط شما و شخصی که برایش ارسال می نمایید می توانید آن را باز کنید. این کاری است که SSH برای مکالمات رایانه شما انجام می دهد.
این مقاله برای کمک به، درک نحوه استفاده از SSH است. ما به شما مراحل استفاده از یک فرمان خاص (آن را مانند یک دست دادن مخفی فکر نمایید) برای اتصال کامپیوتر خود به یک سرور در دنیای لینوکس به شما نشان خواهیم داد. در پایان این راهنما، در استفاده از SSH بمنظور ایمن کردن مکالمات رایانه خود هنگام کار با سرورها ، اطمینان بیشتری خواهید داشت.
SSH چیست؟
SSH یا Secure Shell یک پروتکل شبکه رمزنگاری است که برای برقراری ارتباط امن بین دو سیستم از طریق شبکه هایی که ممکن است ایمن نباشند طراحی شده است. این پروتکل به طور گسترده برای دسترسی از راه دور به سرورها و انتقال امن فایل ها بین رایانه ها استفاده می شود. در اصل، SSH به عنوان یک مجرای امن عمل می کند و یک کانال محرمانه برای ارتباط در سناریوهایی ایجاد می کند که شبکه ممکن است خطرات امنیتی ایجاد کند. این فناوری برای متخصصانی که به دنبال روشی مطمئن و ایمن برای مدیریت سرورها و انتقال دادههای حساس بین رایانهها به شیوهای کنترلشده و محافظتشده هستند، مفید است. ssh در پورت TCP/IP 22 اجرا می شود.
SSH چگونه کار می کند؟
کلاینت و سرور هر دو در ایجاد یک کانال ارتباطی امن SSH مشارکت می کنند. ایجاد یک اتصال SSH به اجزا و مراحل زیر بستگی دارد:
سمت کلاینت: کامپوننت سمت کلاینت (Client-side component )
برنامه یا برنامه ای است که برای اتصال به ماشین دیگر استفاده می شود. کلاینت از اطلاعات میزبان راه دور برای شروع اتصال از طریق برنامه استفاده می کند. اگر اعتبارنامه تأیید شود، برنامه یک اتصال رمزگذاری شده ایجاد می کند.
سمت سرور: در سمت سرور، یک دیمون( SSH daemon) SSH
به طور مداوم به یک پورت TCP/IP خاص ( شماره پورت SSH پیشفرض 22 است) برای درخواستهای اتصال کلاینت احتمالی گوش میدهد. هنگامی که یک کلاینت یک اتصال را از طریق پورت تعریف شده آغاز می کند، دیمون SSH با نرم افزار و نسخه های پروتکلی که پشتیبانی می کند پاسخ می دهد. نسخه پیش فرض پروتکل برای ارتباطات SSH نسخه 2 است.
تعویض کلید Key exchange :
کلاینت و سرور برای ایجاد یک کانال ارتباطی امن، کلیدهای رمزنگاری را مبادله می کنند. کلیدها به رمزگذاری ارتباطات بعدی کمک می کنند.
احراز هویت Authentication : هنگام برقراری یک اتصال، کلاینت داده های شناسایی را به سرور ارائه می دهد (به عنوان نام کاربری / رمز عبور یا کلیدهای SSH). اگر اعتبار ارائه شده صحیح باشد، SSH یک جلسه ارتباط رمزگذاری شده جدید ایجاد می کند.
نحو دستور SSH در لینوکس
دستور اصلی برای استفاده از دستور SSH به شرح زیر است:
ssh [username]@[hostname or IP address]
[username] را با نام کاربری سرور خود و [hostname or IP address] را با نام میزبان یا آدرس IP سرور جایگزین نمایید
پیش نیازها
وضعیت فعالیت سرور (Remote Computer Status ) :
مطمئن شوید که سرور روشن است و اتصال شبکه فعال دارد. SSH به اتصال شبکه متکی است و سرور باید در دسترس باشد.
شناسایی اطلاعات (Identification Information) :
آدرس IP یا نام دستگاه راه دور را دریافت نمایید. این اطلاعات برای هدایت اتصال SSH شما به سرور بسیار مهم است.
مجوز دسترسی (Permission to Access ) :
مطمئن شوید که مجوزهای لازم برای دسترسی به رایانه راه دور را دارید. معمولا شامل داشتن یک نام کاربری و رمز عبور معتبر برای سرور راه دور است.
تنظیمات فایروال :
تنظیمات فایروال را در دستگاه محلی و سرور بررسی نمایید . اتصالات SSH از یک پورت خاص (معمولاً پورت 22) استفاده می کنند، بنابراین اطمینان از اینکه فایروال شما به ترافیک SSH اجازه می دهد بسیار مهم است. ممکن است برای برقراری ارتباط امن نیاز به تنظیمات باشد
SSH را روی لینوکس نصب نمایید
راهاندازی SSH در لینوکس ممکن است ضروری باشد، زیرا برخی از توزیعها از پیش نصب شده نیستند. نصب OpenSSH، یک پیاده سازی SSH است که به طور گسترده مورد استفاده قرار می گیرد، یا انتخاب راه حل رابط کاربری گرافیکی (GUI) مانند کلاینت PuTTY می تواند این مشکل را برطرف کند. در اینجا راهنمای گام به گام نصب و پیکربندی OpenSSH در سمت کلاینت و سرور آورده شده است:
نصب SSH بر روی کلاینت و سرور
برای سیستمهای مبتنی بر دبیان/اوبونتو، در ترمینال کد های زیر را اجرا نمایید:
sudo apt install openssh-client|openssh-server
برای سیستم های مبتنی بر Red Hat مانند CentOS یا Fedora، از یکی از دستورات زیر استفاده فرمایید :
sudo dnf install openssh-clients|openssh-server
یا
sudo yum install openssh-clients|openssh-server
توجه: برای بررسی وضعیت سرور در حال اجرا پس از نصب میتوان از این دستور systemctl status sshd استفاده کرد.
در صورتی که سرویس اجرا نمی شود با دستور زیر آن را اجرا فرمایید:
sudo systemctl start sshd
برای اینکه سرویس به طور خودکار در هنگام بوت شروع شود، اجرا فرمایید:
sudo systemctl enable sshd
فعال کردن سرویس sshd آن را در طول فرآیند بوت شروع می نماید.
sudo systemctl reload ssh
سرویس sshd را دوباره بارگیری می نماید.
نحوه استفاده از SSH برای اتصال به سرور لینوکس
در این مثال ما از طریق خط فرمان ویندوز با استفاده از ssh به ماشین لینوکس اوبونتو یا Red Hat دسترسی پیدا می کنیم
نحوه ی استفاده از ssh برای اتصال به سرور:
ssh jayesh@10.143.90.2
نام کاربری خود را به جای " jayesh " اضافه کنید و آدرس IP خود را به جای "10.143.90.2" اضافه نمایید.
دستور از 3 بخش مختلف تشکیل شده است:
دستور ssh به سیستم دستور می دهد تا یک اتصال امن رمزگذاری شده با دستگاه میزبان برقرار کند.
user_name نشان دهنده حسابی است که در هاست به آن دسترسی دارید.
میزبان به ماشینی اطلاق می شود که می تواند یک کامپیوتر یا یک روتر باشد که در حال دسترسی است.
این می تواند یک آدرس IP (به عنوان مثال، 192.168.1.24) یا دامنه باشد، به عنوان مثال، www.domainname.com).
توجه: پس از ورود به رایانه میزبان، دستورات به گونه ای عمل می شوند که گویی مستقیماً در ترمینال میزبان نوشته شده اند. استفاده از یک جفت کلید عمومی-خصوصی یا جفت کلید SSH برای ورود به هاست در مقایسه با استفاده از رمزهای عبور ایمن تر است.
چگونه کلیدهای عمومی-خصوصی ایجاد کنیم؟
برای تولید کلیدهای عمومی-خصوصی از دستور زیر استفاده فرمایید:
ssh-keygen
کلید خصوصی باید پنهان بماند در حالی که کلید عمومی باید در میزبان کپی شود. پس از کپی کردن کلید عمومی در هاست ، اتصال با استفاده از کلیدهای SSH و نه رمز عبور برقرار می شود.
گزینه های موجود در ssh
در اینجا به جای کاربر و میزبان، نام کاربری و آدرس IP را که می خواهید به آن متصل شوید اضافه نمایید. لوکال هاست IP سیستم محلی ما است.
- ssh -1 user@host
ssh فقط از پروتکل SSH-1 استفاده می نماید.
- ssh -2 user@host
ssh فقط از پروتکل SSH-2 استفاده می نماید.
- ssh -4 user@host
فقط آدرس های IPv4 را مجاز می نماید.
- ssh -6 user@host
فقط به آدرس های IPv6 اجازه می دهد.
- ssh -A user@host
احراز هویت را در ارسال ارتباط فعال می نماید.
- ssh -a user@host
احراز هویت را در ارسال اتصال غیرفعال می نماید.
- ssh -C user@host
تمام داده ها (از جمله stdin، stdout، stderr، و داده ها برای اتصالات X11 و TCP باز ارسال) را برای انتقال سریعتر داده ها فشرده می کند.
-
ssh -c aes256-cbc user@host
مشخصات رمز را برای رمزگذاری جلسه انتخاب می کند. الگوریتم رمزگذاری خاص تنها در صورتی انتخاب می شود که هم کلاینت و هم سرور از آن پشتیبانی کنند.
- ssh -f user@host command
از ssh می خواهد که درست قبل از اجرای دستور به پس زمینه برود.
- ssh -g -L 8080:localhost:80 user@host
به هاست های اجازه می دهد به پورت های فوروارد محلی متصل شوند.
- ssh -n user@host command
از خواندن stdin جلوگیری می نماید.
- ssh -p 2222 user@host
پورت مشخصی را برای اتصال در میزبان استفاده می نماید
- ssh -q user@host
تمام خطاها و هشدارها را کنار می گذارد.
- ssh -v user@host
حالت پرمخاطب ( Verbose mode ) در حین برقراری ارتباط، هر کاری را که انجام میدهد بازتاب می نماید. در رفع اشکال خرابی های اتصال بسیار مفید است.
- ssh –V
نمایش شماره نسخه ssh
- ssh -X user@host
ارسال X11 را فعال می نماید. (GUI Forwarding).
SSH به دلیل رمزگذاری داده ها به طور قابل توجهی ایمن تر از پروتکل های دیگر مانند telnet است.
سه تکنیک اصلی رمزگذاری توسط SSH وجود دارد:
رمزگذاری متقارن ( Symmetrical encryption ): این رمزگذاری بر اساس اصل تولید یک کلید واحد برای رمزگذاری و همچنین رمزگشایی داده ها کار می کند. کلید مخفی تولید شده برای اتصال ایمن بین مشتریان و میزبان ها توزیع می شود. رمزگذاری متقارن اساسی ترین رمزگذاری است و زمانی که داده ها روی یک ماشین رمزگذاری و رمزگشایی شوند بهترین عملکرد را دارد.
رمزگذاری نامتقارن ( Asymmetrical encryption ):
این رمزگذاری ایمن تر است زیرا دو کلید مختلف تولید می کند: کلید عمومی و کلید خصوصی. یک کلید عمومی به ماشین های میزبان مختلف توزیع می شود در حالی که کلید خصوصی به طور ایمن در ماشین کلاینت نگهداری می شود. یک اتصال امن با استفاده از این جفت کلید عمومی-خصوصی برقرار می شود.
هش کردن ( Hashing ):
هش یک طرفه یک تکنیک احراز هویت است که تضمین می کند داده های دریافتی بدون تغییر هستند و از یک فرستنده واقعی می آیند. یک تابع هش برای تولید یک کد هش از داده ها استفاده می شود. تولید مجدد داده ها از مقدار هش غیرممکن است. مقدار هش در انتهای فرستنده و همچنین گیرنده محاسبه می شود. اگر مقادیر هش مطابقت داشته باشد، داده ها معتبر هستند.
سوالات متداول
SSH مخفف چیست؟
SSH مخفف "Secure Shell" است.
SSH برای چه مواردی استفاده می شود؟
SSH برای اتصال ایمن به یک سیستم یا سرور از راه دور استفاده می شود. می توان از آن برای انتقال داده بین دو سیستم متصل استفاده کرد.
SSH روی چه پورتی اجرا می شود؟
SSh در پورت TCP/IP 22 اجرا می شود.
چگونه می توانیم از طریق خط فرمان ویندوز با استفاده از SSH به یک ماشین لینوکس دسترسی داشته باشیم؟
ما می توانیم از طریق دستور windows با استفاده از SSH به یک ماشین لینوکس دسترسی داشته باشیم
ssh user_name@host(IP/Domaimn_name)
چگونه می توانیم کلیدهای عمومی-خصوصی را با استفاده از SSH ایجاد کنیم؟
با استفاده از SSH با استفاده از دستور
ssh-keygen
سه تکنیک اصلی رمزگذاری مورد استفاده توسط SSH چیست؟
رمزگذاری متقارن Symmetrical encryption
رمزگذاری نامتقارن Asymmetrical encryption
هش کردن Hashing
چگونه از SSH برای اتصال به سرور لینوکس استفاده کنم؟
«نام کاربری» را با نام کاربری واقعی خود و «Remote_server_ip» را با آدرس IP یا دامنه سرور راه دور جایگزین کنید.
ssh username@remote_server_ip
دستور SSH برای اتصال به سرور با یک پورت خاص چیست؟
این دستور با استفاده از پورت 2222 به سرور متصل می شود. شماره پورت را در صورت نیاز تنظیم نمایید.
ssh -p 2222 username@remote_server_ip
چگونه می توانیم از SSH برای انتقال فایل ها بین ماشین محلی خود و یک سرور استفاده کنیم؟
استفاده از SCP برای انتقال فایل، این دستور به طور ایمن فایل محلی را در مقصد مشخص شده در سرور کپی می کند. مسیرها و نام فایل ها را بر اساس آن تنظیم نمایید.
scp local_file.txt username@remote_server_ip:/path/to/destination
نتیجه
در این مقاله ما در مورد پوسته ایمن (SSH) صحبت کردیم که مانند یک تونل مخفی و امن برای کامپیوترها برای صحبت ایمن از طریق اینترنت است. این راهنما کمک می کند تا از SSH برای اتصال رایانه خود به سرورها در دنیای لینوکس استفاده نمایید. این همه چیز از دستور اصلی SSH گرفته تا پیش نیازهایی مانند بررسی اتصال به اینترنت و داشتن مجوزهای مناسب را پوشش می دهد.