Тот же частный сервер отвечает через одобренный 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 может пережить изменение маршрута и затем не сработать при следующей записи. Закройте её через поддерживаемую очистку, откройте закладку заново и сравните два пути, вместо того чтобы предполагать, что сервер недоступен.

Держите проверку ключа хоста включённой и для бастиона, и для пункта назначения.

Другой маршрут не даёт вам права принять ключ сервера, которого вы не ожидали, и не делает неодобренный путь приемлемым. Оба — отдельные решения от того, которое вы принимали.

Похожие статьи