Di kantor, saya dapat terhubung ke mesin internal tanpa proxy, tetapi memerlukan proxy untuk koneksi eksternal. Di luar kantor, saya dapat terhubung ke mesin eksternal lain tanpa proxy, tetapi perlu menggunakan salah satu dari 2 proxy untuk terhubung ke mesin internal.
Jika saya dapat menemukan cara untuk mendeteksi secara otomatis jaringan apa yang saya gunakan, dapatkah saya menginstruksikan ssh untuk memuat file konfigurasi yang sesuai?
Jika tidak, apakah ada solusi yang lebih elegan daripada menulis skrip shell untuk symlink file konfigurasi yang sesuai ke ~ / .ssh / config (ide terbaik saya sejauh ini)?
Sunting: Saya pikir @pcm dan JonnyRo mengerti pertanyaan saya dan saya akan mencoba apa yang mereka sarankan, tetapi hanya untuk menjadi jelas, saya ingin
|--------\ Dest | abc.example.com | xyz.external.org |
| Source \---------\| | |
|--------------------+-----------------+------------------|
| example.com office | No Proxy | Proxy |
| outside | Proxy | No Proxy |
Pertanyaan lama, tetapi beberapa ide di utas ini membantu saya dan ini adalah solusi yang saya buat:
Pertama, konfigurasi ssh server proxy .
Kemudian, konfigurasi Server B :
Idenya di sini adalah bahwa case default terhubung dari situs eksternal dan ProxyCommand memulai koneksi ssh ke proxy terlebih dahulu dan kemudian terhubung ke server-b . Jika, di sisi lain, kita sudah berada di subnet lokal, ProxyCommand dinonaktifkan dan tidak ada koneksi proxy ke server-a dibuat.
Terlepas dari di mana Anda berada, Anda selalu dapat mencapai server-abc dengan entri ini dan pengaturan ini menentukan di mana Anda berada dan mengatur koneksi yang sesuai. Untuk server-xyz , gunakan saja ide yang sama.
Saya membuat penjelasan yang lebih lengkap di sini: http://blog.kihltech.com/2017/04/ssh-conditional-host-address-based-on-network-or-location/
sumber
Tulis skrip shell yang memeriksa IP Anda terhadap suatu pola, lalu sambungkan skrip shell yang sesuai.
Jika karena alasan tertentu rentang IP Anda sama untuk rumah dan kantor, coba beralih berdasarkan /etc/resolv.conf, yang berisi server DNS yang dikonfigurasi DHCP.
sumber
Opsi "Host" di .ssh / config memungkinkan Anda mengubah konfigurasi berdasarkan tujuan. Saya menggunakannya untuk menyesuaikan port forwarding dan semacamnya berdasarkan ke mana saya akan pergi.
sumber
Saya telah melihat pertanyaan ini di masa lalu dan salah satu solusi yang mungkin adalah memiliki entri seperti itu di file konfigurasi:
Dengan cara ini, jika Anda berada di luar, Anda dapat $ ssh machine.inside_domain. Jika Anda berada di dalam dan memiliki penyelesaian dns, Anda dapat $ ssh mesin. Itu bekerja dengan baik untuk saya.
Mungkin seseorang dapat memperbaiki ide ini, mungkin mengubah konfigurasi DNS sehingga secara otomatis menyelesaikan mesin ke machine.inside_domain jika Anda berada di luar dan menggunakan titik masuk SSH.
sumber