Ten sam prywatny serwer odpowiada przez zatwierdzony VPN i przez zatwierdzony bastion, a ty chcesz jednej zakładki Emacsa dla każdego z nich zamiast skrótu, który zgaduje. Decyzja nie dotyczy tego, która ścieżka jest lepsza; dotyczy tego, która ścieżka jest dozwolona dla pracy, którą masz przed sobą. Utrzymuj obie jawnie, nazwij je osobno i pozwól nazwie pliku powiedzieć, którą wybrałeś.

Warunek pierwszy: które ścieżki są zatwierdzone?

Host skoku nie jest automatycznym zamiennikiem wymogu VPN, a VPN nie jest licencją na pominięcie zatwierdzonego bastionu. Zapytaj, które trasy są dozwolone dla twojego konta i dla tych danych. Jeśli dozwolone są obie, masz wybór; jeśli tylko jedna, zestaw zakładek ma jedną pozycję. Ta odpowiedź pochodzi od właściciela danych, a nie od trasy, która akurat dziś działa.

Zapisz odpowiedź, ponieważ podczas incydentu ta różnica szybko znika.

Obie ścieżki potrzebują też własnej konfiguracji konta i tożsamości. Wspólny alias, który działa przez jedną trasę, może zawieść przez drugą z powodów, które nie mają nic wspólnego z siecią.

Warunek drugi: czy potrafisz nazwać każdą ścieżkę odrębnie?

Konfiguracja SSH może zawierać dwa aliasy hosta dla jednego adresu, każdy z innym zachowaniem proxy. Umieść konkretne bloki przed dowolnym szerokim znakiem wieloznacznym, ponieważ pierwsza uzyskana wartość wygrywa w większości opcji.

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

Powyższy adres jest przykładem; zastąp go tym, który dokumentuje twój zespół. Alias skoku potrzebuje też zatwierdzonego konta bastionu, co zwykle oznacza drugi blok Host dla samego bastionu. Wyłączenie współdzielenia połączeń tutaj utrzymuje uczciwe porównanie ścieżek, ponieważ ponownie użyte połączenie multipleksowane może przetrwać zmianę trasy, którą próbujesz zaobserwować.

Wtedy zdalne nazwy plików pozostają odrębne i czytelne.

/ssh:proj-direct:/srv/project/README.md
/ssh:proj-bastion:/srv/project/README.md

Warunek trzeci: czy edytor zna różnicę?

TRAMP traktuje te dwie nazwy plików jako różne cele, i to jest dokładnie to, czego chcesz. Dodaj zakładkę do każdej pod nazwą, która mówi, której ścieżki używa, i otwieraj zakładkę ponownie zamiast zmieniać znaczenie jednego celu. Dwie zakładki uwidaczniają też porównanie: możesz otworzyć obie i zobaczyć, która zawodzi, bez zmiany jakiejkolwiek konfiguracji.

Jedno ustawienie zasługuje na uwagę, gdy uczestniczy ProxyJump: współdzielenie połączeń TRAMP musi być wyłączone dla odpowiednich połączeń, więc ustaw tramp-use-connection-share na nil przed ich otwarciem. To ustawienie zgodności, nie naprawa brakującej trasy, i nie czyni dozwoloną ścieżki, która nie jest dozwolona. FAQ TRAMP dokumentuje zakładki jako obsługiwany sposób skracania tych nazw.

Zakładka, która po cichu zmienia trasę, jest gorsza niż brak zakładki.

Dlaczego ikona sieci niczego nie dowodzi

Ogólna wartość stanu 70 w NetworkManagerze oznacza, że maszyna ma łączność globalną. Nie wskazuje żadnego profilu VPN, a zwykłe Wi-Fi ją spełnia. Tunel tylko dla sieci prywatnej, który niesie dokładnie potrzebną trasę, może pozostawić tę zbiorczą wartość nietkniętą. Dlatego skrót powiązany z ikoną może zgłaszać gotowość dla ścieżki, której nigdy nie testował.

Czytaj stan konkretnego połączenia, a nie globalny.

Jeśli cokolwiek automatyzujesz, odpytaj nazwane połączenie, a następnie w tej kolejności sprawdź trasę docelową, odpowiedź resolvera i osiągalność SSH. Każde z nich może zawieść, gdy poprzednie się udaje, a zlewanie ich w jedną wartość logiczną jest tym, jak automatyzacja kończy, raportując sukces dla ścieżki, której nigdy nie użyła.

Co zrobić, gdy ścieżka przestaje działać

Zapisz bufory przed zbadaniem sprawy, ponieważ istniejąca sesja TRAMP może przetrwać zmianę trasy, a potem zawieść przy następnym zapisie. Zamknij ją przez obsługiwane sprzątanie, otwórz ponownie zakładkę i porównaj obie ścieżki, zamiast zakładać, że serwer nie działa.

Pozostaw weryfikację klucza hosta włączoną zarówno dla bastionu, jak i dla celu.

Inna trasa nie daje ci prawa zaakceptować klucza serwera, którego się nie spodziewałeś, ani nie czyni akceptowalną ścieżki, która nie jest zatwierdzona. Oba są odrębnymi decyzjami od tej, którą podejmowałeś.

Powiązane artykuły