Два 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 FAQ документира отметките като поддържания начин за съкращаване на тези имена.
Отметка, която тихо сменя маршрута, е по-лоша от липсата на отметка.
Защо иконата на мрежата не доказва нищо
Общата стойност на състоянието 70 в NetworkManager означава, че машината има глобална свързаност. Тя не назовава VPN профил и обикновеният Wi-Fi я удовлетворява. Тунел само за частна мрежа, който носи точно нужния ви маршрут, може да остави тази обобщена стойност непроменена. Затова пряк път, обвързан с иконата, може да съобщава готовност за път, който никога не е проверявал.
Четете състоянието на конкретната връзка, а не глобалното.
Ако автоматизирате нещо, запитайте именуваната връзка, после проверете целевия маршрут, отговора на резолвера и достъпността по SSH в този ред. Всяко от тях може да се провали, докато предишното успява, а сливането им в един булев флаг е начинът, по който автоматизацията отчита успех за път, който никога не е използвала.
Какво да правите, когато път спре да работи
Запазете буферите си преди разследване, защото съществуваща сесия на TRAMP може да надживее промяна на маршрута и после да се провали при следващия запис. Затворете я чрез поддържаното почистване, отворете отметката отново и сравнете двата пътя, вместо да предполагате, че сървърът е спрян.
Дръжте проверката на ключа на хоста включена и за бастиона, и за дестинацията.
Различен маршрут не ви дава право да приемете ключ на сървър, който не сте очаквали, и не прави неодобрен път приемлив. И двете са отделни решения от това, което сте вземали.