W biurze mogę łączyć się z komputerami wewnętrznymi bez serwera proxy, ale potrzebuję serwera proxy do połączeń zewnętrznych. Poza biurem mogę połączyć się z innymi urządzeniami zewnętrznymi bez serwera proxy, ale muszę użyć jednego z 2 serwerów proxy, aby połączyć się z komputerami wewnętrznymi.
Jeśli mogę znaleźć sposób na automatyczne wykrycie sieci, w której jestem, czy mogę poinstruować ssh, aby załadował odpowiedni plik konfiguracyjny?
Jeśli nie, to czy istnieje bardziej eleganckie rozwiązanie niż pisanie skryptu powłoki w celu dowiązania odpowiedniego pliku konfiguracyjnego do ~ / .ssh / config (mój najlepszy pomysł do tej pory)?
Edycja: Myślę, że @pcm i JonnyRo zrozumieli moje pytanie i wypróbuję ich sugestie, ale dla jasności chcę
|--------\ Dest | abc.example.com | xyz.external.org |
| Source \---------\| | |
|--------------------+-----------------+------------------|
| example.com office | No Proxy | Proxy |
| outside | Proxy | No Proxy |
Napisz skrypt powłoki, który sprawdza adres IP względem wzorca, a następnie dowiązuje symbolicznie odpowiedni skrypt powłoki.
Jeśli z jakiegoś powodu twój zakres adresów IP jest taki sam dla domu i pracy, spróbuj przełączyć się na /etc/resolv.conf, który zawiera serwery DNS skonfigurowane przez DHCP.
źródło
Opcja „Host” w .ssh / config pozwala zmienić konfigurację w zależności od miejsca docelowego. Używam tego, aby dostosować przekierowanie portów i takie w zależności od tego, dokąd zmierzam.
źródło
Analizowałem to pytanie w przeszłości i jednym z możliwych rozwiązań jest posiadanie takiego wpisu w pliku konfiguracyjnym:
W ten sposób, jeśli jesteś na zewnątrz, możesz $ ssh machine.inside_domain. Jeśli jesteś w środku i masz rozwiązanie dns, możesz $ ssh machine. To działa dobrze dla mnie.
Może ktoś może ulepszyć ten pomysł, może zmienić konfigurację DNS, aby automatycznie rozstrzygał maszynę na maszynę. Wewnątrz_domena, jeśli jesteś na zewnątrz i używasz punktu wejścia SSH.
źródło