دو نام مستعار SSH، یک سرور: VPN مستقیم یا میزبان پرش
یک مسیر VPN تأییدشده و یک مسیر سنگر تأییدشده را بهعنوان نامهای مستعار و نشانکهای جداگانه نگه دارید تا هیچ میانبری مجبور نباشد مسیر مجاز را حدس بزند.
همان سرور خصوصی از طریق VPN تأییدشده و از طریق سنگر تأییدشده پاسخ میدهد، و شما برای هر کدام یک نشانک Emacs میخواهید، نه میانبری که حدس میزند. تصمیم این نیست که کدام مسیر بهتر است؛ بلکه این است که کدام مسیر برای کاری که پیش روی شماست مجاز است. هر دو را صریح نگه دارید، جداگانه نامگذاری کنید، و بگذارید نام فایل بگوید کدام را انتخاب کردهاید.
شرط یک: کدام مسیرها تأیید شدهاند؟
میزبان پرش جایگزین خودکار برای الزام VPN نیست، و VPN مجوزی برای رد کردن یک سنگر تأییدشده نیست. بپرسید کدام مسیرها برای حساب شما و برای این دادهها مجاز هستند. اگر هر دو مجاز باشند، حق انتخاب دارید؛ اگر فقط یکی باشد، مجموعه نشانکها یک ورودی دارد. آن پاسخ از مالک داده میآید، نه از مسیری که امروز تصادفاً کار میکند.
پاسخ را بنویسید، چون این تمایز در هنگام یک رخداد بهسرعت ناپدید میشود.
هر دو مسیر به پیکربندی حساب و هویت خودشان هم نیاز دارند. یک نام مستعار مشترک که از یک مسیر کار میکند، ممکن است از مسیر دیگر به دلایلی شکست بخورد که هیچ ارتباطی با شبکه ندارد.
شرط دو: آیا میتوانید هر مسیر را بهطور متمایز نامگذاری کنید؟
یک پیکربندی SSH میتواند دو نام مستعار میزبان برای یک نشانی داشته باشد، هر کدام با رفتار پروکسی متفاوت. بلوکهای مشخص را پیش از هر نویسه عام گسترده قرار دهید، چون نخستین مقدار بهدستآمده برای بیشتر گزینهها برنده است.
Host proj-direct proj-bastion
HostName 10.60.0.21
User analyst
ControlPath none
Host proj-direct
ProxyJump none
Host proj-bastion
ProxyJump gw.example.com
نشانی بالا یک مثال است؛ آن را با نشانیای که تیم شما مستند میکند جایگزین کنید. نام مستعار پرش به حساب تأییدشده سنگر هم نیاز دارد، که معمولاً به معنای یک بلوک Host دوم برای خود سنگر است. غیرفعال کردن اشتراکگذاری اتصال در اینجا مقایسه مسیرها را صادق نگه میدارد، چون یک اتصال چندگانه بازاستفادهشده میتواند از تغییر مسیری که میخواهید مشاهده کنید بیشتر عمر کند.
سپس نام فایلهای راه دور متمایز و خوانا میمانند.
/ssh:proj-direct:/srv/project/README.md
/ssh:proj-bastion:/srv/project/README.md
شرط سه: آیا ویرایشگر تفاوت را میداند؟
TRAMP آن دو نام فایل را دو مقصد متفاوت میداند، که همان چیزی است که میخواهید. هر یک را زیر نامی که میگوید از کدام مسیر استفاده میکند نشانک کنید، و نشانک را دوباره باز کنید نه اینکه معنای یک مقصد را تغییر دهید. دو نشانک مقایسه را هم قابل مشاهده میکنند: میتوانید هر دو را باز کنید و ببینید کدام شکست میخورد بدون اینکه هیچ پیکربندیای را تغییر دهید.
وقتی ProxyJump در میان است یک تنظیم شایسته توجه است: اشتراکگذاری اتصال TRAMP باید برای اتصالهای مربوطه خاموش باشد، پس پیش از باز کردن آنها tramp-use-connection-share را روی nil بگذارید. این یک تنظیم سازگاری است، نه رفع یک مسیر گمشده، و مسیر غیرمجاز را مجاز نمیکند. پرسشهای متداول TRAMP نشانکها را بهعنوان روش پشتیبانیشده برای کوتاه کردن این نامها مستند میکند.
نشانکی که بیصدا مسیر را عوض کند از نبود نشانک بدتر است.
چرا نماد شبکه هیچ چیزی را ثابت نمیکند
مقدار کلی وضعیت 70 در NetworkManager یعنی دستگاه اتصال جهانی دارد. این مقدار هیچ نمایه VPN را نام نمیبرد، و Wi-Fi معمولی آن را برآورده میکند. یک تونل فقط-خصوصی که دقیقاً مسیر موردنیاز شما را حمل میکند میتواند آن مقدار تجمیعی را دستنخورده بگذارد. به همین دلیل میانبری که به نماد گره خورده میتواند آمادگی مسیری را گزارش کند که هرگز آن را نیازموده است.
وضعیت اتصال مشخص را بخوانید، نه وضعیت کلی را.
اگر چیزی را خودکار میکنید، اتصال نامگذاریشده را بپرسید، سپس به همین ترتیب مسیر مقصد، پاسخ حلکننده و دسترسی SSH را بررسی کنید. هر یک از اینها میتواند شکست بخورد در حالی که قبلی موفق است، و فروکاستن آنها به یک مقدار بولی همان راهی است که خودکارسازی در نهایت برای مسیری که هرگز استفاده نکرده موفقیت گزارش میکند.
وقتی یک مسیر از کار میافتد چه کنیم
پیش از بررسی بافرهایتان را ذخیره کنید، چون یک نشست موجود TRAMP میتواند از تغییر مسیر بیشتر عمر کند و سپس در نوشتن بعدی شکست بخورد. آن را از طریق پاکسازی پشتیبانیشده ببندید، نشانک را دوباره باز کنید، و دو مسیر را مقایسه کنید نه اینکه فرض کنید سرور پایین است.
راستیآزمایی کلید میزبان را برای سنگر و مقصد روشن نگه دارید.
یک مسیر متفاوت به شما حق نمیدهد کلید سروری را که انتظارش را نداشتید بپذیرید، و مسیر تأییدنشده را هم قابلقبول نمیکند. هر دو تصمیمهایی جدا از تصمیمی هستند که در حال گرفتنش بودید.