У меня есть сервер с именем gamma
, постоянно включенным и работающим на работе. Иногда я подключаюсь к нему из дома, и в этом случае я использую публичный IP-адрес 55.22.33.99
. Иногда я подключаюсь к нему, когда я на работе, и вместо того, чтобы пересылать свои пакеты без необходимости, я подключаюсь через локальный IP-адрес 192.168.1.100
.
На данный момент я разделил их на две записи в ~/.ssh/conf
Host gamma-local
HostName 192.168.1.100
Port 22
User andreas
Host gamma-remote
HostName 55.22.33.99
Port 12345
User andreas
Итак, если я на работе, все, что я должен напечатать, ssh gamma-local
и я в; если я дома (или где-либо еще в мире), я бегу ssh gamma-remote
.
При подключении к серверу я бы предпочел не вводить другое имя в зависимости от того, где я нахожусь, я бы предпочел, чтобы эта часть выполнялась автоматически; например, в некоторых случаях у меня есть автоматические скрипты, которые подключаются, кто не знает, где я.
Существует вопрос, который решает эту проблему с помощью сценария Bash, чтобы «попытаться» сначала подключиться к локальному, а если он не подключается, попытаться подключиться к удаленному IP-адресу. Это хорошо, но (1) кажется неэффективным (особенно если учесть, что иногда приходится «ждать» истечения времени ожидания соединений, поскольку они не всегда сразу возвращают ошибку), и (2) требуется Bash и обход сценария.
Есть ли альтернативный способ достижения этого, который не зависит ни от использования скриптов Bash, ни от «тестирования», чтобы увидеть, работает ли сначала соединение?
/etc/hosts
или файл конфигурации SSH, чтобы добиться этого? Или, может быть, какой-то способ «определить», к какой локальной сети вы сейчас подключены?