Ağa bağlı ~ / .ssh / config?


15

Ofiste, proxy olmadan dahili makinelere bağlanabilirim, ancak harici bağlantılar için proxy'ye ihtiyacım var. Ofis dışında, diğer harici makinelere proxy olmadan bağlanabilirim, ancak dahili makinelere bağlanmak için 2 proxy'den birini kullanmam gerekiyor.

Hangi ağda olduğumu otomatik olarak algılamanın bir yolunu bulabilirsem, ssh'ye uygun yapılandırma dosyasını yüklemesini söyleyebilir miyim?

Değilse, ~ / .ssh / config (şimdiye kadar en iyi fikrim) için uygun yapılandırma dosyasını işaretlemek için bir kabuk komut dosyası yazmaktan daha zarif bir çözüm var mı?

Düzenleme: Bence @pcm ve JonnyRo sorumu anladı ve ne önerdiklerini deneyeceğim, ama açık olmak gerekirse, istiyorum

|--------\    Dest   | abc.example.com | xyz.external.org |
| Source  \---------\|                 |                  |
|--------------------+-----------------+------------------|
| example.com office | No Proxy        | Proxy            |
| outside            | Proxy           | No Proxy         |

Yanıtlar:


11

Proxy'nizin nasıl yapılandırıldığına bağlı olarak, her iki durumda da çalışan bir SSH yapılandırma girişi oluşturabilirsiniz. Örneğin düzenli olarak kullandığım bir ağda, giden bir bağlantı yapmadan önce bir ara ana bilgisayara ssh kullanmam gerekir. Temelde böyle bir konfigürasyon kuruyorum.

# proxy ssh 
Host *%sshproxy
    ProxyCommand ssh user@proxyhost.example.org /bin/netcat -w 1 $(echo %h | cut -d%% -f1) 22

Host myhost.example.org
    HostName 172.16.24.1

Host otherhost.example.com
    HostName 192.168.57.12

Yani bir proxy kullanmam gerekmediğinde, basitçe bir komut çalıştırıp ssh myhost.example.orgbağlanabiliyorum, ama proxy'ye ihtiyacım olduğunda, komutu çalıştırıyorum ssh myhost.example.org%sshproxy.

Muhtemelen %proxybiraz otomatik olarak ekleyecek bir tür takma ad veya otomatik tamamlama ayarı kurabileceğinizden şüpheleniyorum .


9

Eski soru, ama bu konudaki bazı fikirler bana yardımcı oldu ve bu bir çözüm buldum:

İlk olarak, proxy sunucusu ssh yapılandırması.

Match Originalhost proxy Exec "ifconfig | grep 10.0.1"
     Hostname 10.0.1.2
Host proxy 
     Hostname external.hostname.com

Ardından, Sunucu B yapılandırması:

Match Originalhost server-b Exec "ifconfig | grep 10.0.1"
     ProxyCommand none
Host server-b
     Hostname 10.0.1.3
     ProxyCommand ssh -W %h:%p server-a

Buradaki fikir, varsayılan durumun harici bir siteden bağlanması ve ProxyCommand'ın önce proxy'ye bir ssh bağlantısı başlatması ve ardından sunucu-b'ye bağlanmasıdır . Öte yandan, zaten yerel alt ağda bulunuyorsak, ProxyCommand devre dışı bırakılır ve sunucu-a ile proxy bağlantısı yapılmaz .

Nerede olursanız olun, bu girişle sunucu abc'ye her zaman ulaşabilirsiniz ve bu kurulum nerede olduğunuzu anlar ve bağlantıyı buna göre kurar. İçin sunucu xyz , sadece aynı fikri kullanırlar.

Burada daha ayrıntılı bir açıklama yaptım: http://blog.kihltech.com/2017/04/ssh-conditional-host-address-based-on-network-or-location/


7

Farklı yapılandırma dosyalarından seçim yapmak için -F seçeneğini kullanabilirsiniz. iki ağ durumu için. Daha sonra, bulunduğunuz ağa bağlı olarak farklı yapılandırma dosyalarını kullanan takma adlar oluşturabilir veya giriş komut dosyanızda IP adresinize bağlı olarak tek bir takma ad oluşturabilirsiniz.


Teşekkürler! IP tabanlı bir komut dosyası alamazsam -F ile takma adlar kesinlikle benim yedek olacak.
Nate Parsons

Bu harika, hemen hemen aynı soruyu sormak üzereydim. Zaten yeni bir uçbirim başlattığımda ortam değişkenlerini ayarlamak için başka seçenekler de yazıyorum, ortama dayalı olarak uygun bir .ssh / config oluşturabilirim.
newz2000

1

IP'nizi bir desene göre kontrol eden bir kabuk betiği yazın ve ardından uygun kabuk betiğini sembolize edin.

Herhangi bir nedenden dolayı IP aralığınız ev ve iş için aynı ise, DHCP yapılandırılmış DNS sunucularını içeren /etc/resolv.conf dosyasını temel alarak değiştirmeyi deneyin.


0

.Ssh / config dosyasındaki "Host" seçeneği, yapılandırmayı hedefe göre değiştirmenize olanak tanır. Bunu, port yönlendirmeyi ayarlamak için kullanıyorum ve nereye gittiğime bağlı olarak.


0

Geçmişte bu soruya baktım ve olası bir çözüm yapılandırma dosyasında bu girişe sahip olmaktır:

Host ENTRY_POINT
Hostname ENTRY_POINT_FQDN
User USERNAME

Host *.INSIDE_DOMAIN
ProxyCommand ssh ENTRY_POINT nc %h %p

Bu şekilde dışarıdaysanız $ ssh machine.inside_domain yapabilirsiniz. İçerideyseniz ve dns çözümlüyse, $ ssh makinesi yapabilirsiniz. Bu benim için iyi çalışıyor.

Belki birisi bu fikri geliştirebilir, DNS yapılandırmasını değiştirebilir, böylece dışarıdaysanız ve SSH giriş noktasını kullanırsanız makineyi machine.inside_domain'e otomatik olarak çözer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.