Etki alanı adı olmadan sunucu adına dahili olarak sunuculara ssh nasıl yapılır?


10

İşimi tamamlamak için işyerinde birden fazla sunucuya giriş yapmam gerekiyor. Erişmek için bir sunucunun FQDN'sini yazmaktan sıkılıyorum. Kendi özel ağımızda ssh üzerinden giriş / çıkış yapıyorum. Ben kendi özel ağ b / c% 99 eminim tüm sunucuların ip addr 10.xyz Sadece sunucu adı değil, etki alanı adı ile sunuculara ssh bir yolu var mı?

Birden fazla ülkede sunucularımız var. Sunucularımızın adlandırılma şekli çok uzundur. Aşağıdaki gibi adlandırılır:

hostname.country.domainname.com

Yazarak karpal tünel alıyorum ssh me@hostname1.country.domainname.com

... sunucularımızdan birine her eriştiğimde. ABD'deysem ve ABD'de bulunan başka bir ana bilgisayara erişmeye çalışırsam, sadece yazabilirim ssh me@hostname2ve iyi bağlarım. Ancak, eğer ABD'deysem ve İngiltere'de bir sunucuya bağlanmaya çalışırsam, yazamıyorum ssh me@hostname3.engve bağlanamıyorum hostname3.

Yaptığım geçici çözüm, bazı sunucular için ~ / .ssh / config dosyamda bir diğer ad oluşturmaktı. Ancak, bu dosyaya 1000+ sunucu eklemenin mümkün olduğunu düşünmüyorum. Zaten 20'den fazla sunucu ekledim ve iş arkadaşlarım deli olduğumu düşünüyorlar, ancak sshing yaparken FQDN'yi yazmak için deli olduklarını düşünüyorum.

Etki alanıadı.com'a her seferinde yazmak zorunda kalmamamız için bir şey kurmamızın kolay bir yolu var mı?

Yanıtlar:


18

%hYapılandırmanızda joker karakter kullanabilir ve kullanabilirsiniz

Örneğin

Host *.eng
  Hostname %h.domainname.com

Şimdi bunu yaptığınızda ssh foo.engbağlanmaya çalışacağız foo.eng.domainname.com.

Bu yapılandırmaya başka seçenekler de ekleyebilirsiniz; örneğin, kullanıcı adını zorlamak

Host *.eng
  Hostname %h.domainname.com
  User me

Şimdi bunu yaptığınızda kullanıcı olarak ssh foo.engbağlanmaya çalışacağız .foo.eng.domainname.comme

% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known

(iyi, benim için geçerli bir ana bilgisayar adı olmadan önce bir hata alıyorum!)

Şimdi her ülke için sadece bir kurala ihtiyacınız var.


İlk düşüncem DNS takma adları, ikincisi anasistemler dosyasıydı, ancak birden fazla sunucu olduğunu kaçırdım. Bu çözüm mükemmel görünüyor. Yayınladığınız satırları hangi yapılandırma alır?
Xalorous

Bu içine giriyor $HOME/.ssh/configya da sistemi geniş hale getirebilirsiniz/etc/ssh/ssh_config
Stephen Harris

İle çalışır mı user@*.eng?
Xalorous

3
Yazdığım kural ile bunu yapabilirsiniz ssh foobar@somewhere.engve beklendiği gibi çalışacaktır. Bütün bunlar ana bilgisayar adı bileşenini yeniden yazmaktır. Hatta birlikte çalışacağız scpve sftpvb.
Stephen Harris

9

Eklerseniz

search domainname.com

için /etc/resolv.conf, ve kullanımı hostname.country, ssh(ve bu konuda diğer ağ programları) otomatik ekleme domainname.comiçin size 1 .

Ben senin için farklı bir ülke alan adları ekleme sanmıyorum searchiki farklı ülkelerde iki sunucunun aynı hostname paylaşıyorsanız beklenmeyen davranışı elde edebilir, çünkü yolun iyi bir fikir olduğunu 2

Bu yöntemin sshyapılandırmayı değiştirmekten daha iyi olduğuna inanıyorum çünkü bu, hostname.countrykullandığınız programdan ( telnet, VNC, ...) bağımsız olarak çözülmeye izin veriyor .

Görmek resolv.conf(5)


1 Daha doğrusu, kendi kendine domainname.comçözülemezse eklenir hostname.country.

2 Böyle bir senaryoda hostname, etki alanı searchyolda ilk olarak listelenen ülkedeki sunucuya çözümlenir .


2
BTW bunu LOCALDOMAIN env değişkeni ile kök olmayan ve işlem başına da yapabilirsiniz. man resolv.conf
rudimeier

Bu, SSH ana bilgisayarını çözmek için çalışır, ancak GSS / Kerberos kullanıyorsanız adlar eşleşmez ve kimlik doğrulama başarısız olur.
Nick T

7

Bu CanonicalDomainsseçeneği ssh config'inizde kullanabilirsiniz.

Ssh config dosyanıza aşağıdakileri eklemek ssh'ın domainname.comadında en fazla 1 nokta bulunan herhangi bir ana bilgisayara eklenmeye çalışacaktır :

CanonicalizeHostname yes
CanonicalDomains domainname.com

Bu yapılandırma ile ssh foo.engönce dener foo.eng.domainname.comve foo.engana bilgisayar bulunamazsa geri döner . Benzer şekilde, ssh github.comilk önce dener github.com.domainname.com, bu nedenle GitHub'a bağlanmak istiyorsanız, DNS sunucunuz mevcut olmayan ana bilgisayarlar için kayıt döndürmemelidir.

CanonicalizeMaxDotsSsh bunun tam gördüğünü ve ekleme yapmaz önce hostname görünebilecek kaç noktanın kontrol etmek için kullanılabilir domainname.com. şu anda sahip olduğunuz şema göz önüne alındığında sizin için yeterli olması gereken varsayılan değer 1'dir, ancak böyle bir şeye ulaşırsanız hostname.city.countryonu artırmanız gerekir.

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.