Product SiteDocumentation Site

9.2. دسترسی از راه‌دور

اتصال به یک رایانه از راه‌دور برای مدیرسیستم یک امر ضروری است. سرورها، که در اتاق‌های جداگانه‌ای بدون صفحه‌کلید و نمایشگر قرار می‌گیرند - به شبکه متصل هستند.

9.2.1. ورود امن از راه‌دور: SSH

پروتکل SSH یا Secure SHell با توجه به اصول امنیتی و قابلیت اطمینان طراجی شده است. ارتباطاتی که از SSH استفاده می‌کنند امن هستند: طرف مقابل احراز هویت شده و تمام اطلاعات به صورت رمزگذاری شده ارسال می‌شوند.
SSH همچنین تو سرویس انتقال فایل را ارائه می‌دهد. scp یک ابزار خط فرمان است که عملکردی مشابه cp دارد، به جز مسیرهای خارج از یک رایانه که باید ابتدا نام رایانه به همراه دو نقطه آورده شود.
$ scp file machine:/tmp/
sftp یک دستور تعاملی مشابه ftp است. در یک نشست واحد، sftp می‌تواند چندین فایل را منتقل کند و امکان ایجاد تغییرات در فایل‌های راه‌دور نیز وجود دارد (حذف، تغییر نام، تغییر مجوزها و از این قبیل).
دبیان از OpenSSH، یک نسخه آزاد از SSH که توسط پروژه OpenBSD مدیریت می‌شود (یک سیستم عامل آزاد مبتنی بر کرنل BSD با تمرکز بر امنیت) و انشعاب نسخه اصلی نرم‌افزار SSH که توسط شرکت SSH Communications Security Corp در فنلاند اداره می‌شد، استفاده می‌کند. این شرکت در ابتدا SSH را به عنوان نرم‌افزار آزاد منتشر کرد، اما در ادامه مسیر تصمیم گرفت تا توسعه آن را تحت یک مجوز انحصاری انجام دهد. پروژه OpenBSD با ایجاد OpenSSH تصمیم گرفت یا یک نسخه آزاد از آن ارائه دهد.
OpenSSH به دو بسته تقسیم شده است: بخش مربوط به کلاینت در بسته openssh-client و بخش مربوط به سرور در بسته openssh-server قرار دارد. بسته ssh به هر دو آن‌ها وابسته بوده و عملیات نصب آن‌ها را انجام می‌دهد (apt install ssh).

9.2.1.1. احرازهویت کلید-محور

با هر بار ورود از طریق SSH، سرور راه‌دور درخواست یک گذرواژه برای احزارهویت کاربر می‌کند. این می‌تواند در صورت خودکارسازی ارتباط یا استفاده از ابزاری که نیاز به ارتباط مداوم با سرور دارد، مشکل‌ساز گردد. به همین دلیل است که SSH سیستم احرازهویت کلید-محور را فراهم کرده است.
کاربر در رایانه خود اقدام به ایجاد یک جفت کلید با استفاده از دستور ssh-keygen -t rsa می‌کند؛ کلید عمومی در فایل ~/.ssh/id_rsa.pub و کلید خصوصی در فایل ~/.ssh/id_rsa ذخیره می‌شوند. کاربر با اجرای دستور ssh-copy-id server کلید عمومی خود را به انتهای فایل ~/.ssh/authorized_keys موجود در سرور اضافه می‌کند. اگر کلید خصوصی در زمان تولید خود با استفاده از “گذزواژه” محافظت نشده باشد، تمام ورودهای جداگانه به سرور بدون درخواست گذرواژه کار خواهند کرد. در غیر اینصورت، کلید خصوصی در هر مرتبه ورود به سرور نیاز به رمزگشایی با استفاده از گذرواژه مربوطه دارد. خوشبختانه، ssh-agent امکان نگهداری کلید خصوصی در حافظه را به منظور دسترسی آسان‌تر فراهم می‌کند. به این منظور، کافی است ssh-add را (برای هر نشست جداگانه) با یک نسخه کامل ssh-agent بکار می‌برید. دبیان این کار را در نشست‌های گرافیکی به صورت خودکار انجام می‌دهد اما می‌توانید با تغییر در /etc/X11/Xsession.options آن را غیرفعال کنید. برای یک نشست کنسول، می‌توانید آن را به صورت دستی و با eval $(ssh-agent) آغاز کنید.

9.2.1.2. استفاده راه‌دور از برنامه‌های X11

پروتکل SSH امکان فوروارد کردن داده‌های گرافیکی را می‌دهد (نشست “X11”، که از نام متداول‌ترین سیستم گرافیکی یونیکس گرفته شده است)؛ سرور یک کانال اختصاصی برای آن در نظر می‌گیرد. به خصوص، یک برنامه گرافیکی که از راه‌دور اجرا می‌شود می‌تواند روی سرور X.org سیستم محلی نمایش یابد و تمام نشست جاری (ورودی و نمایش) امن خواهد بود. از آنجا که این سیستم اجازه تداخل برنامه‌های راه‌دور با سیستم محلی را می‌دهد، به صورت پیش‌فرض غیرفعال است. می‌توانید با مشخص کردن X11Forwarding yes در فایل پیکربندی سرور (/etc/ssh/sshd_config) آن را فعال کنید. در نهایت، کاربر نیز هنگام درخواست ssh باید گزینه -X را بیان کند.

9.2.1.3. ایجاد تونل‌های رمزگذاری شده با پورت فورواردینگ

گزینه‌های -R و -L به ssh امکان ایجاد “تونل‌های رمزگذاری‌شده” بین دو رایانه را می‌دهند، که به تبع آن یک پورت TCP محلی (قسمت بازگشت به مقدمات TCP/UDP را مشاهده کنید) به شیوه‌ای امن می‌تواند به یک ماشین راه‌دور فوروارد شود یا بر عکس.
دستور ssh -L 8000:server:25 intermediary یک نشست SSH با میزان intermediary برقرار کرده و به پورت محلی ۸۰۰۰ گوش می‌دهد ( شكل 9.3, “فوروارد کردن یک پورت محلی با SSH” را مشاهده کنید). برای هر ارتباطی که روی این پورت برقرار شود، ssh یک ارتباط میانی از رایانه intermediary با پورت ۲۵ روی server برقرار کرده و هر دو ارتباط را به یکدیگر متصل می‌کند.
دستور ssh -R 8000:server:25 intermediary نیز یک نشست SSH با رایانه intermediary برقرار می‌کند، اما روی این رایانه است که ssh به پورت ۸۰۰۰ ( شكل 9.4, “فوروارد کردن یک پورت راه‌دور با SSH” را مشاهده کنید) گوش می‌دهد. هر ارتباطی که روی این پورت برقرار شود ssh یک ارتباط با پورت ۲۵ server برقرار کرده و هر دو ارتباط را به یکدیگر متصل می‌کند.
در هر دو مورد، ارتباطات با پورت ۲۵ میزان server برقرار شد، که جریان داده آن از طریق تونل SSH بین سیستم محلی و سیستم intermediary می‌گذرد. در مورد اول، ورودی تونل پورت ۸۰۰۰ محلی است و داده قبل از اینکه به server در شبکه “عمومی” برسد از طریق رایانه intermediary می‌گذرد. در مورد دوم، ورودی و خروجی تونل برعکس شده است؛ ورودی پورت ۸۰۰۰ از رایانه intermediary است و خروجی روی سیستم محلی قرار دارد و جریان داده به این شکل به server هدایت می‌شود. در عمل، سرور همان سیستم محلی یا میانی است. به این شیوه SSH می‌تواند ارتباط امنی بین هر دو رایانه برقرار کند.
فوروارد کردن یک پورت محلی با SSH

شكل 9.3. فوروارد کردن یک پورت محلی با SSH

فوروارد کردن یک پورت راه‌دور با SSH

شكل 9.4. فوروارد کردن یک پورت راه‌دور با SSH

9.2.2. استفاده از میزکارهای گرافیکی راه‌دور

VNC یا Virtual Network Computing اجازه دسترسی راه‌دور به میزکارهای گرافیکی را می‌دهد.
این ابزار بیشتر برای راهنمایی فنی استفاده می‌شود؛ مدیرسیستم می‌تواند خطاهایی را ببیند که کاربر با آن مواجه است و به آن‌ها شیوه حل مساله را آموزش دهد.
ابتدا، کاربر باید اجازه اشتراک نشست خود را صادر کند. میزکار گرافیکی GNOME در Jessie این گزینه را در پنل پیکربندی خود شامل می‌شود (برخلاف نسخه‌های قبلی دبیان که کاربر می‌بایست بسته vino را نصب و اجرا کند). KDE هنوز به بسته krfb جهت اشتراک نشست فعلی با VNC نیاز دارد. برای سایر میزکارهای گرافیکی، دستور x11vnc (در بسته دبیان با همین نام) هدف مشابهی را دنبال می‌کند؛ می‌توانید آن را با استفاده از یک نماد گرافیکی در اختیار کاربر قرار دهید.
زمانی که نشست گرافیکی توسط VNC آماده شود، مدیرسیستم باید با استفاده از یک کلاینت VNC به آن متصل شود. GNOME از vinagre و remmina به این منظور استفاده می‌کند در حالی که ابزار KDE شامل krdc است (در منوی KInternetRemote Desktop Client). سایر کلاینت‌های VNC نیز وجود دارند که در خط فرمان عمل می‌کنند مانند xvnc4viewer در بسته دبیان با همین نام. زمانی که ارتباط برقرار شود، مدیرسیستم می‌بیند که مشکل از کجاست، به صورت راه‌دور آن را عیب‌یابی کرده و به کاربر شیوه حل مساله را می‌آموزد.
VNC همچنین برای کاربران یک شرکت، مانند مدیران اجرایی، که نیاز به دسترسی به رایانه شرکت از خانه خود را دارند بکار می‌رود. پیکربندی چنین سرویسی کمی پیچیده‌تر است: ابتدا بسته vnc4server را نصب می‌کنید، پیکربندی مدیر نمایش را به منظور قبول درخواست‌های XDMCP Query تغییر می‌دهید (برای gdm3، اینکار با افزودن Enable=true در قسمت “xdmcp” از فایل /etc/gdm3/daemon.conf صورت می‌گیرد) و در نهایت سرور VNC را با استفاده از inetd آغاز می‌کنید به طوری که هر زمان کاربر درخواست داد نشست مربوطه آغاز گردد. برای نمونه، می‌توانید این خط را به فایل /etc/inetd.conf بیفزایید:
5950  stream  tcp  nowait  nobody.tty  /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
هدایت ارتباطات ورودی به مدیر نمایش مشکل احراز هویت را حل می‌کند، چرا که تنها کاربران با حساب‌های کاربری محلی می‌توانند از صفحه gdm3 عبور کنند (یا معادل kdm، xdm و از این قبیل). از آنجا که این عملیات امکان چندین ورودی مختلف را فراه می‌کند (در صورت قوی بودن سرور)، می‌تواند برای ارائه میزکارهای گرافیکی برای کاربران سیار (یا برای سیستم‌های رومیزی ضعیف‌تر) استفاده شود. کاربران تنها کافی است با استفاده از vncviewer server:50 به سرور متصل شوند، چرا که پورت مورد استفاده ۵۹۵۰ است.