Xvnc(1) Virtual Network Computing Xvnc(1)

Xvnc - سرور X VNC

Xvnc [options] :display#

Xvnc یک سرور X VNC (محاسبات شبکه مجازی) است. این سرور بر پایه یک X server استاندارد توسعه یافته است، اما به جای یک صفحه‌نمایش فیزیکی، دارای یک صفحه‌نمایش «مجازی» است. برنامه‌های کاربردی X خود را همانند یک نمایشگر عادی X روی آن نمایش می‌دهند، اما دسترسی به آن‌ها تنها از طریق یک VNC viewer امکان‌پذیر است - به vncviewer(1) مراجعه کنید.

بنابراین Xvnc در واقع دو سرور در یک قالب است؛ برای برنامه‌های کاربردی یک سرور X و برای کاربران راه دور VNC، یک سرور VNC به شمار می‌آید. طبق توافق، شماره نمایشگر سرور VNC همان شماره نمایشگر سرور X خواهد بود؛ این بدان معناست که برای نمونه می‌توانید از snoopy:2 برای اشاره به نمایشگر شماره ۲ روی دستگاه «snoopy» در هر دو محیط X و VNC استفاده کنید.

بهترین راه برای راه‌اندازی Xvnc از طریق vncsession است. این ابزار محیط را به شکل مناسبی تنظیم کرده و یک محیط رومیزی را اجرا می‌کند. برای اطلاعات بیشتر به صفحه راهنمای vncsession(8) مراجعه کنید.

Xvnc گزینه‌های فراوانی می‌پذیرد - اجرای Xvnc -help فهرستی از آن‌ها را ارائه می‌دهد. بسیاری از این‌ها گزینه‌های استاندارد X server هستند که در صفحه راهنمای Xserver(1) شرح داده شده‌اند. افزون بر گزینه‌هایی که تنها از طریق خط فرمان قابل تنظیم هستند، «پارامترهایی» نیز وجود دارند که می‌توان آن‌ها را هم از طریق خط فرمان و هم با استفاده از برنامه vncconfig(1) تنظیم کرد.

عمق پیکسلی میزکاری که باید ایجاد شود را بر حسب بیت مشخص می‌کند. مقدار پیش‌فرض 24 است، مقادیر ممکن دیگر 16 و 32 هستند. هر مقدار دیگری احتمالاً باعث بروز رفتارهای غیرعادی در برنامه‌ها شده و ممکن است به طور کلی مانع از راه‌اندازی سرور شود.
اندازه میزکار ایجادشونده را مشخص می‌کند. مقدار پیش‌فرض 1024x768 است.
فهرست کردن تمام گزینه‌ها و پارامترها.
این گزینه رفتار Xvnc را به طور چشمگیری تغییر می‌دهد تا بتوان آن را از طریق inetd اجرا کرد. بخش مربوط به استفاده با inetd را در ادامه ببینید.
تعیین قالب پیکسلی مورد استفاده سرور (BGRnnn یا RGBnnn). مقدار پیش‌فرض برای عمق ۱۶ برابر RGB565 و برای عمق ۲۴ و ۳۲ برابر RGB888 است.
گره رندر DRM برای استفاده در شتاب‌دهی پردازنده گرافیکی DRI3. برای غیرفعال کردن DRI3 یک مسیر خالی مشخص کنید. مقدار پیش‌فرض auto است که باعث می‌شود Xvnc یک گره رندر مناسب و موجود را برگزیند.

پارامترهای VNC را می‌توان هم از طریق خط فرمان و هم برنامه vncconfig(1) تنظیم کرد؛ همچنین در یک سرور Xorg مجهز به VNC، از طریق مدخل‌های Options در فایل xorg.conf قابل تنظیم هستند.

پارامترها را می‌توان با -param فعال یا با -param=0 غیرفعال کرد. پارامترهایی که مقدار می‌پذیرند را می‌توان به صورت -param value مشخص نمود. سایر قالب‌های معتبر عبارتند از param=value و -param=value و --param=value. نام پارامترها به بزرگی و کوچکی حروف حساس نیستند.

پذیرش به‌روزرسانی‌های کلیپ‌بورد از سوی کلاینت‌ها. پیش‌فرض فعال است.
پذیرش رویدادهای فشردن و رها کردن کلیدها از سوی کلاینت‌ها. پیش‌فرض فعال است.
پذیرش رویدادهای حرکت و کلیدهای اشاره‌گر از سوی کلاینت‌ها. پیش‌فرض فعال است.
پذیرش درخواست‌های تغییر اندازه میزکار. پیش‌فرض فعال است.
فهرست جدا شده با کاما از پارامترهایی که می‌توان با استفاده از افزونه VNC آن‌ها را تغییر داد. پارامترها را می‌توان برای نمونه با استفاده از برنامه vncconfig(1) از درون یک نشست فعال تغییر داد.
همیشه اتصالات ورودی را صرف نظر از تنظیمات تعیین‌شده توسط کلاینت به عنوان اشتراکی تلقی می‌کند. پیش‌فرض غیرفعال است.
کلیدهای تحت تأثیر NumLock اغلب برای تولید نماد صحیح نیازمند درج یک Shift ساختگی هستند. فعال کردن این گزینه مانع از ایجاد این رویدادهای ساختگی Shift اضافی می‌شود، اما ممکن است منجر به ایجاد نمادی کمی متفاوت گردد (برای نمونه Return به جای Enter صفحه‌کلید عددی).
تعداد تلاش‌های ناموفق احراز هویت مجاز از سوی هر میزبان، پیش از قرار گرفتن آن میزبان در فهرست سیاه. مقدار پیش‌فرض 5 است.
زمان انتظار اولیه‌ای که هنگام قرار گرفتن یک میزبان در فهرست سیاه اعمال می‌شود. میزبان نمی‌تواند تا زمان پایان این مهلت مجدداً برای اتصال تلاش کند. مقدار پیش‌فرض 10 است.
انجام مقایسه پیکسلی روی framebuffer به منظور کاهش به‌روزرسانی‌های غیرضروری. می‌تواند یکی از مقادیر 0 (غیرفعال)، 1 (همیشه) یا 2 (خودکار) باشد. مقدار پیش‌فرض 2 است.
هر میزکار دارای نامی است که ممکن است توسط viewer نمایش داده شود. مقدار پیش‌فرض آن "<user>@<hostname>" است.
قطع اتصال کلاینت‌های موجود در صورتی که اتصال ورودی غیر‌اشتراکی باشد. پیش‌فرض فعال است. اگر مقدار DisconnectClients نادرست (false) باشد، تا زمانی که کلاینتی فعال است اتصال غیر‌اشتراکی جدید رد خواهد شد. در صورت ترکیب با NeverShared، این بدان معناست که در هر لحظه تنها یک کلاینت مجاز خواهد بود.
حداکثر تعداد به‌روزرسانی‌های ارسالی در ثانیه به هر کلاینت. اگر صفحه‌نمایش سریع‌تر به‌روز شود، آن تغییرات تجمیع شده و در قالب یک به‌روزرسانی واحد به کلاینت فرستاده می‌شوند. توجه داشته باشید که این گزینه تنها بیشینه نرخ را کنترل می‌کند و ممکن است کلاینت در زمان محدودیت منابع نرخ پایین‌تری دریافت کند. مقدار پیش‌فرض 60 است.
رشته اولویت GnuTLS که الگوریتم‌های دست‌تکانی نشست TLS را کنترل می‌کند. برای مقادیر ممکن به راهنمای GnuTLS مراجعه کنید. برای نسخه‌های GnuTLS قدیمی‌تر از 3.6.3 مقدار پیش‌فرض برابر NORMAL خواهد بود تا از پیش‌فرض بالادستی استفاده شود. برای نسخه‌های جدیدتر GnuTLS، از سیاست‌های رمزنگاری سراسری سیستم استفاده خواهد شد.
تعداد ثانیه‌هایی که پس از آن یک اتصال VNC بدون فعالیت (idle) قطع خواهد شد. پیش‌فرض 0 است، به این معنی که اتصالات بدون فعالیت هرگز قطع نخواهند شد.
استفاده از الگوریتم فشرده‌سازی بهبودیافته برای کدگذاری Hextile که به بهای مصرف کمی زمان پردازنده بیشتر، به نسبت‌های فشرده‌سازی بهتری دست می‌یابد. پیش‌فرض فعال است.
گوش دادن روی رابط شبکه مشخص‌شده. به طور پیش‌فرض Xvnc روی تمام رابط‌های شبکه موجود گوش می‌دهد.
تنها اجازه برقراری ارتباط از همان ماشین را می‌دهد. اگر از SSH استفاده می‌کنید و می‌خواهید اتصالات غیر SSH را از هر میزبان دیگری مسدود کنید، مفید است.
تنظیمات ثبت وقایع اشکال‌زدایی (debug log) را پیکربندی می‌کند. dest در حال حاضر می‌تواند stderr، stdout یا syslog باشد، و level مقداری بین 0 تا 100 است که 100 به معنای پرجزئیات‌ترین خروجی است. logname معمولاً * به معنی همه است، اما در صورت دانستن نام "LogWriter" آن می‌توانید یک فایل مبدأ خاص را هدف قرار دهید. مقدار پیش‌فرض *:stderr:30 است.
خاتمه دادن به کار در صورتی که یک کلاینت به مدت N ثانیه متصل بوده باشد. مقدار پیش‌فرض 0 است.
حداکثر اندازه به‌روزرسانی کلیپ‌بورد که از یک کلاینت پذیرفته می‌شود (بر حسب بایت). مقدار پیش‌فرض 262144 است.
خاتمه دادن به کار در صورتی که هیچ کلاینتی به مدت N ثانیه متصل نبوده باشد. مقدار پیش‌فرض 0 است.
خاتمه دادن به کار پس از N ثانیه عدم فعالیت کاربر. مقدار پیش‌فرض 0 است.
هرگز اتصالات ورودی را صرف نظر از تنظیمات مشخص‌شده توسط کلاینت به عنوان اشتراکی تلقی نمی‌کند. پیش‌فرض غیرفعال است. -pam_service name, -PAMService name نام سرویس PAM برای استفاده در هنگام احراز هویت کاربران با استفاده از هر یک از انواع امنیتی "Plain". پیش‌فرض vnc است.
کدگذاری باینری مبهم‌سازی‌شده‌ی گذرواژه‌ای که کلاینت‌ها باید برای دسترسی به سرور ارائه دهند. استفاده از این پارامتر ناامن است، به جای آن از پارامتر PasswordFile استفاده کنید.
فایل گذرواژه برای احراز هویت VNC. هیچ پیش‌فرضی وجود ندارد، باید فایل گذرواژه را به صراحت مشخص کنید. فایل گذرواژه باید با ابزار vncpasswd(1) ایجاد شود. این فایل هر بار که اتصالی برقرار می‌شود بازخوانی می‌گردد، بنابراین می‌توان آن را در حین اجرا نیز تغییر داد.
فهرستی از نام‌های کاربری جداشده با کاما که مجاز به احراز هویت از طریق هر یک از انواع امنیتی "Plain" (مانند Plain، TLSPlain و غیره) هستند. برای اجازه دادن به هر کاربری جهت احراز هویت با استفاده از این نوع امنیتی، * را مشخص کنید. برای مجاز کردن کاربری که فرایند سرور تحت آن اجرا می‌شود، %u را مشخص کنید. پیش‌فرض، رد کردن تمام کاربران است.
همیشه از پروتکل نسخه 3.3 برای سازگاری پس‌رو با کلاینت‌های بدرفتار استفاده می‌کند. پیش‌فرض غیرفعال (off) است.
از کاربر میزکار می‌خواهد که اتصالات ورودی را به صراحت بپذیرد یا رد کند. پیش‌فرض غیرفعال (off) است.

برنامه vncconfig(1) باید روی میزکار در حال اجرا باشد تا QueryConnect پشتیبانی شود.

تعداد ثانیه‌هایی که پنجره اعلان پذیرش اتصال، پیش از رد کردن اتصال نمایش داده می‌شود. پیش‌فرض 10 است.
رویدادهای صفحه‌کلید را مستقیماً ارسال می‌کند و از نگاشت آن‌ها به چیدمان فعلی صفحه‌کلید جلوگیری می‌نماید. این کار عملاً باعث می‌شود رفتار صفحه‌کلید به جای چیدمان پیکربندی‌شده روی کلاینت، مطابق با چیدمان پیکربندی‌شده روی سرور باشد. پیش‌فرض غیرفعال (off) است.
یک نگاشت صفحه‌کلید برپا می‌کند. mapping رشته‌ای جداشده با کاما از نگاشت‌های نویسه است که هر کدام به صورت char->char، یا char<>char، هستند، که در آن char یک keysym در مبنای شانزده (هگزادسیمال) است. برای نمونه، برای جابه‌جا کردن نمادهای " و @ می‌توانید عبارت زیر را مشخص کنید:
RemapKeys=0x22<>0x40
الزام نام کاربری برای انواع امنیتی RSA-AES. پیش‌فرض غیرفعال (off) است.
درگاه TCP را مشخص می‌کند که Xvnc روی آن منتظر اتصالات از سوی مشاهده‌گرها (viewers) می‌ماند (پروتکل مورد استفاده در VNC، RFB یا «فریم‌بافر راه دور» نامیده می‌شود). پیش‌فرض ۵۹۰۰ به‌علاوه شماره نمایشگر (display number) است. برای غیرفعال کردن گوش دادن روی درگاه TCP، مقدار -1 را مشخص کنید.
حالت دسترسی (mode) سوکت دامنه یونیکس را مشخص می‌کند. پیش‌فرض 0600 است.
مسیر یک سوکت دامنه یونیکس را مشخص می‌کند که Xvnc روی آن منتظر اتصالات از سوی مشاهده‌گرها می‌ماند.
مسیر کلید RSA برای انواع امنیتی RSA-AES (RA2، RA2ne، RA2_256 و RA2ne_256) در قالب PEM.
طرح امنیتی مورد استفاده برای اتصالات ورودی را مشخص می‌کند. مقادیر معتبر فهرستی جداشده با کاما از None، VncAuth، Plain، TLSNone، TLSVnc، TLSPlain، X509None، X509Vnc، X509Plain، RA2، RA2ne، RA2_256 و RA2ne_256 هستند. پیش‌فرض TLSVnc,VncAuth است.
تغییرات کلیپ‌بورد را به کلاینت‌ها ارسال می‌کند. پیش‌فرض فعال (on) است.
انتخاب اولیه (primary selection) و بافر برش را علاوه بر انتخاب کلیپ‌بورد به سرور ارسال می‌کند. پیش‌فرض فعال (on) است.
انتخاب اولیه را علاوه بر انتخاب کلیپ‌بورد تنظیم می‌کند. پیش‌فرض فعال (on) است.
در صورتی که احراز هویت یک میزبان مکرراً با شکست مواجه شود، اتصالات آن را به صورت موقت رد می‌کند. پیش‌فرض فعال (on) است.
استفاده از IPv4 برای اتصالات ورودی و خروجی. پیش‌فرض فعال (on) است.
استفاده از IPv6 برای اتصالات ورودی و خروجی. پیش‌فرض فعال (on) است.
مسیر گواهی X509 در قالب PEM برای استفاده در تمام انواع امنیتی مبتنی بر X509 (مانند X509None، X509Vnc و غیره).
کلید خصوصی متناظر با گواهی ارائه‌شده در X509Cert. این کلید نیز باید در قالب PEM باشد.

اجازه دادن به بازنویسی پارامترهایی مانند PAMService یا PasswordFile در صورتی که Xvnc تحت کاربری متفاوتی از برنامه‌های مجاز به بازنویسی پارامترها اجرا شود، می‌تواند بر امنیت تأثیر منفی بگذارد.

هنگامی که پارامتر NoClipboard تنظیم شده باشد، اجازه دادن به بازنویسی SendCutText و AcceptCutText هیچ تأثیری ندارد.

پیش‌فرض desktop,AcceptPointerEvents,SendCutText,AcceptCutText,SendPrimary,SetPrimary است..SH "استفاده با INETD (USAGE WITH INETD)" با پیکربندی مناسب سرویس inetd(1)، می‌توان Xvnc را به جای راه‌اندازی دستی، هنگام برقراری اتصال به‌صورت درخواستی اجرا کرد. هنگامی که گزینهٔ -inetd به آن داده شود، به جای گوش دادن به اتصالات TCP روی یک درگاه مشخص، از ورودی استاندارد و خروجی استاندارد خود استفاده می‌کند. دو حالت وجود دارد که توسط مدخل wait/nowait در فایل inetd.conf کنترل می‌شوند.

در حالت nowait، نرم‌افزار Xvnc از ورودی و خروجی استاندارد خود مستقیماً به عنوان اتصال به یک نمایشگر (viewer) استفاده می‌کند. این برنامه هرگز سوکت شنونده ندارد، بنابراین نمی‌تواند اتصالات بیشتری را از سوی نمایشگرها بپذیرد (اگرچه می‌تواند با استفاده از برنامهٔ vncconfig به نمایشگرهای شنونده متصل شود). اتصالات بیشتر نمایشگرها به همان درگاه TCP باعث می‌شود که inetd برای رسیدگی به هر اتصال، یک Xvnc جدید اجرا کند. هنگامی که اتصال به نمایشگر قطع می‌شود، فرآیند Xvnc و تمام کلاینت‌های X مرتبط با آن خاتمه می‌یابند. این رفتار در ترکیب با گزینه‌های XDMCP شامل -query و -once بیشترین کاربرد را دارد. یک نمونهٔ معمول در inetd.conf ممکن است به این شکل باشد (همگی در یک خط):

5950 stream tcp nowait nobody /usr/local/bin/Xvnc Xvnc -inetd -query localhost -once securitytypes=none

در این مثال، اتصال یک نمایشگر به :50 منجر به ایجاد یک Xvnc جدید برای آن اتصال می‌شود که باید صفحهٔ ورود استاندارد XDM را در آن ماشین نمایش دهد. معمولاً پذیرش اتصالات بدون گذرواژهٔ VNC مشکلی ندارد، زیرا کاربر در این حالت همچنان باید از طریق XDM وارد سیستم شود.

در حالت wait، وقتی نخستین اتصال دریافت می‌شود، inetd سوکت شنونده را به Xvnc تحویل می‌دهد. این بدان معناست که برای یک درگاه TCP مشخص، در هر زمان تنها یک Xvnc فعال است. اتصالات بعدی نمایشگر به همان درگاه، به روش عادی توسط همان Xvnc پذیرفته می‌شوند. حتی زمانی که اتصال اولیه قطع شود، Xvnc به اجرای خود ادامه خواهد داد. اگر این مورد همراه با گزینه‌های XDMCP شامل -query و -once استفاده شود، با خروج عادی کاربر از نشست X، فرآیند Xvnc و کلاینت‌های X مرتبط با آن خاتمه می‌یابند. استفاده از گذرواژهٔ VNC در این حالت ضروری است. یک مدخل معمول در inetd.conf ممکن است به این شکل باشد:

5951 stream tcp wait james /usr/local/bin/Xvnc Xvnc -inetd -query localhost -once passwordFile=/home/james/.config/tigervnc/passwd

در واقع معمولاً شما برای هر کاربری که مرتباً از VNC استفاده می‌کند یک مدخل خواهید داشت که هر کدام درگاه TCP اختصاصی خود را دارند. در این مثال، هنگامی که کاربر «james» به :51 وصل می‌شود، گذرواژهٔ VNC خود را وارد کرده و سپس صفحهٔ ورود XDM را دریافت می‌کند که در آن به روش معمول وارد سیستم می‌شود. با این حال، برخلاف مثال پیشین، در صورت قطع اتصال، نشست پایدار می‌ماند و با اتصال مجدد، همان نشست را دوباره بازمی‌یابد. هنگامی که کاربر از نشست X خارج شود، Xvnc خاتمه می‌یابد، اما طبیعتاً در اتصال بعدی، نمونه‌ای جدید به طور خودکار ساخته خواهد شد.

vncconfig(1), vncpasswd(1), vncviewer(1), vncsession(8), Xserver(1), inetd(1)
https://www.tigervnc.org

Tristan Richardson، شرکت RealVNC Ltd. و دیگران.

نرم‌افزار VNC در ابتدا توسط تیم RealVNC هنگام فعالیت در Olivetti Research Ltd / AT&T Laboratories Cambridge توسعه داده شد. قابلیت‌های TightVNC توسط Constantin Kaplinsky پیاده‌سازی شدند. از آن زمان افراد بسیار دیگری در توسعه، آزمایش و پشتیبانی مشارکت داشته‌اند. این راهنما بخشی از مجموعه نرم‌افزاری TigerVNC است.

TigerVNC