Як вказати кілька комбінацій HostName / Port у .ssh / config


10

У мене є декілька ноутбуків і робочих станцій, які витягують і виштовхують з декількох сховищ Mercurial на центральному сервері. Зазвичай я .ssh/configвстановлюю псевдонім:

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156

... і ще кілька варіантів, ви отримуєте ідею. Тоді я можу просто зробити в hg push ssh://repo-server//hgroot/someprojectкожному локальному сховищі, і я можу змінити адресу та порт сервера в одному місці.

Для робочих станцій це працює чудово, але ноутбуки можуть отримати доступ до сервера або зсередини мережі, або ззовні, використовуючи іншу адресу та інший порт. Чи можна вказати кілька комбінацій HostName / Port, щоб SSH автоматично спробував їх у порядку? Таким чином, користувачі могли натискати і тягнути, не піклуючись про правильну адресу.

(звичайно, використання VPN було б найбільш правильним рішенням)

Відповіді:


5

Я боюся, що це неможливо із SSH.

Ви можете, можливо, обійти це за допомогою ProxyCommandпараметра ssh, поряд із спеціальним сценарієм, який створює TCP-з'єднання з сервером (використовуючи netcat), залежно від того, як / де підключений ваш ноутбук. Щось у напрямку:

#!/bin/bash
SSID=$(/sbin/iwgetid wlan0 -r)

case "$SSID" in
net1)
  nc <host1> <port1>
  ;;
net2)
  nc <host2> <port2>
  ;;
*)
  nc <host3> <port3>
  ;;
esac

Тоді, у вашому .ssh/config, вам знадобиться наступне:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script

Здогадуюсь, я напишу сценарій, який потім модифікує HostNameзаписи. Дякую.
leoluk

Це виглядає специфічно для Linux ... наприклад, / sbin / iwgetid не існує в WSL ...
Майкл

-1

Іншою альтернативою може бути налаштування сценарію для пересилання ssh-порту 22 «правильного» ip на якийсь невикористаний локальний порт вашого ноутбука, а потім ssh там. Я використовую це у досить багатьох ситуаціях.


1
Це зовсім не зрозуміло без прикладу.
Ендрю Шульман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.