SSH یا Secure Shell یک پروتکل امن برای اتصال به سرور یا دیگر تجهیزات شبکه از راه دور و به صورت رمز شده می باشد. SSH برای شما یک راه ارتباطی بر پایه متن یا shell بین مبدا و مقصد ایجاد میکند. بعد از برقراری اتصال تمامی دستوراتی که شما در ترمینال وارد میکنید روی سیستم مقصد به اجرا در می آید.
مهمترین و پرکاربردترین روش برای اتصال به یک سرور لینوکسی از راه دور استفاده از پروتکل SSH است.
بیشتر بخوانید:
SSH چگونه کار میکند؟
وقتی شما از طریق SSH به سرور خود متصل میشوید یک نشست برای شما ایجاد میشود که مبتنی بر متن بوده و یک ارتباط رمز شده را بین شما و سرور برقرار میکند. از آن به بعد هر دستوری که در محیط ارتباطی وارد کنید روی سرور مقصد به اجرا در می آید. تمامی دستورات وارد شده توسط شما از طریق یک تونل امن و رمز شده به سرور مقصد ارسال میشود.
پروتکل SSH یک پروتکل وابسته به کلاینت و سرور می باشد. این بدان معناست که برای ایجاد ارتباط سرویس SSH باید روی سرور مقصد نصب و فعال باشد. پورت پیش فرض برای SSH پورت ۲۲ می باشد. سرویس SSH دائما در حال گوش دادن روی این پورت و منتظر برقراری ارتباط از مبدا می باشد. اما وجود بستر مناسب فقط روی سرور کافی نیست. کلاینت نیز باید برای برقراری این ارتباط بستر لازم را که داشتن کلاینت SSH می باشد داشته باشد.
برای برقراری یک ارتباط از طریق SSH وارد کردن نام کاربری، آدرس مقصد و شماره پورت الزامی می باشد. شناسایی کاربران توسط سرور مقصد از طریق رمز عبور (دارای امنیت کمتری میباشد) و یا از طریق کلید(دارای امنیت زیادی است) ممکن می باشد.
OpenSSH
همانطور که از اسم آن مشخص است این پروتکل متن باز بوده و توسط گروه Open BSD تحت Simplified BSD License منتشر شده است. این پروتکل از پلت فرم های زیادی پشتیبانی میکند.
جالب است بدانید که ترافیک های عبوری از پروتکل های telnet و ftp به صورت متن ساده و بدون رمز بوده که موجب علاقه مندی هکرها برای اجرای حملات مرد میانی یا man-in-the-middle می باشد. همین موجب شده است که نقش OpenSSH برای برقراری ارتباطات از راه دور پر رنگ تر به نظر برسد. برخی ویژگی های OpenSSH را با هم بررسی میکنیم:
- برقراری ارتباط امن
- رمزگزاری قوی (۳DES, Blowfish, AES, Arcfour)
- X11 فرواردینگ (برقراری ارتباط رمز شده بوسیله فروارد کردن ترافیک روی X11 محیط های مبتنی بر گرافیک)
- پورت فرواردینگ
- احراز هویت قوی (استفاده از کلید عمومی)
- پشتیبانی از پوتکل نسخه ۲٫۰ SSH
- قابلیت پیاده سازی روی پروتکل FTP و تبدیل آن به یک پروتکل امن به نام SFTP
- و …
نصب OpenSSH در لینوکس
برای نصب OpenSSH روی چهار توزیع محبوب لینوکسی به صورت زیر عمل کنید:
1 |
root@arshatech:~#apt-get install openssh-server openssh-client |
1 |
[root@arshatech ~]# yum install openssh-server openssh-clients |
تنظیمات SSH
توصیه همیشگی ما برای ایجاد تغییر در تنظیمات یک سرویس ابتدا بکاپ گرفتن از فایل یا فایل هاییست که دست خوش تغییر میشوند. شما نیز برای اعمال تغییرات مدنظر خودتان ابتدا بک کپی از فایل تنظیمات SSH بگیرید:
1 |
root@arshatech:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak |
حال میتوانید با خیال راحت تری به ویرایش فایل مورد نظر بپردازید:
1 |
[root@a-stdir ~]# vi /etc/ssh/sshd_config |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO ... |
فراموش نکنید که بعد از هرگونه تغییر حتما می بایست سرویس SSH را یک بار ری استارت کنید. و باز هم توصیه همیشگی ما به شما بعد از ری استارت کردن یک سرویس گرفتن وضعیت آن و اطمینان حاصل کردن از عدم وجود مشکل هنگام اعمال تغییرات است:
1 |
[root@arshatech ~]# systemctl restart sshd |
1 |
[root@arshatech ~]# systemctl status sshd |
اتصال به سرور از طریق SSH
حال اگر شما میخواهید به سرور لینوکسی خود از طریق پروتکل SSH متصل شوید بسته به سیستم عامل مبدا شرایط متفاوت خواهد بود. بعنوان مثال اگر شما از ویندوز میخواهید به سرور لینوکسی خود متصل شوید باید از یکی از ابزارهای مخصوص این کار استفاده کنید که مرسوم ترین آن ها نرم افزار putty می باشد. اما اگر میخواهید از یک سیستم لینوکسی SSH بزنید میتوانید به صورت زیر عمل کنید:
1 |
root@arshatech:~# ssh <user>@<ip_address> -p <port number> |
شماره پورت ssh به صورت پیش فرض ۲۲ می باشد و در این صورت دیگر هنگام برقراری ارتباط نیازی به استفاده از سوئیچ p-(حرف کوچک) و وارد کردن عدد ۲۲ نیست.