Ssh config içinde birden çok benzer giriş


193

ssh30 sunucu için seçeneklerimi dosyamda aynı kurulumla yapılandırmak istediğimi söyle .ssh config:

host XXX
     HostName XXX.YYY.com
     User my_username
     Compression yes
     Ciphers arcfour,blowfish-cbc
     Protocol 2
     ControlMaster auto
     ControlPath ~/.ssh/%r@%h:%p
     IdentityFile ~/.ssh/YYY/id_rsa

Bu 30 makine arasında değişen tek şey nerede XXX.

Yukarıdaki yapıyı dosyamda 30 kez tekrarlamak yerine config, bir dizi makineyi tanımlamanın başka bir yolu var mı?

Yanıtlar:


232

Gönderen ssh_config(5)adam sayfası:

 Host    Restricts the following declarations (up to the next Host key‐
         word) to be only for those hosts that match one of the patterns
         given after the keyword.  If more than one pattern is provided,
         they should be separated by whitespace.

...

 HostName
         Specifies the real host name to log into.  This can be used to
         specify nicknames or abbreviations for hosts.  If the hostname
         contains the character sequence ‘%h’, then this will be replaced
         with the host name specified on the commandline (this is useful
         for manipulating unqualified names).

Yani:

Host XXX1 XXX2 XXX3
  HostName %h.YYY.com

9
%hÖzelliğin OpenSSH'nin 5.6 sürümünde göründüğü görülüyor . Neden daha önce görmediğimi merak ediyordum - Debian Squeeze'deki sürüm 5.5.
jw013,

2
Eski bir işletim sistemindeyseniz veya desteklenmeyen kurallara ihtiyacınız configvarsa, her zaman yalnızca sizi oluşturan basit bir komut dosyası yazabilirsiniz config.
Roger Dahl,

69

Kurulumu en aza indirmek için buna .ssh/configbenzer bir

Host X01
    HostName X01.YYY.com

Host X02
    HostName X02.YYY.com

...

Host X01 X02 ...
     User my_username
     Compression yes
     Ciphers arcfour,blowfish-cbc
     Protocol 2
     ControlMaster auto
     ControlPath ~/.ssh/%r@%h:%p
     IdentityFile ~/.ssh/YYY/id_rsa

Host X01 X02 ...Host *Her ana bilgisayarın aşağıdaki yapılandırmaya sahip olması durumunda , bunun yerine


2
OP'ye (ve kendime) gerçekten yardım eden tek cevap bu gibi görünüyor.
Mad Physicist

Öncelik sırası nedir? Dosyada daha sonra tanımlanmış olan şeyler, dosyada daha önce tanımlanmış olanları geçersiz kılar mı? "X01 Ana Bilgisayarı" altında "Sıkıştırma hayır" olduğunu söylediğim gibi, bu "Host X01 X02" altındaki "Sıkıştırma evet" tarafından geçersiz kılınır mı?
Ben Farmer

1
Ssh_config manual: Her parametre için ilk elde edilen değer kullanıldığından, dosyanın başlangıcına yakın bir zamanda daha fazla ana bilgisayara özgü bildirimler ve sonunda genel varsayılanlar verilmelidir.
Guillaume Vincent,

Can Host X01 X02 ...ile değiştirilebilir *.YYY.com? İşe yararsa bu biraz daha yönetilebilir görünüyor.
Michael,

51

Basitçe kullanın *

Bakınız man ssh_config:

PATTERNS Bir desen, sıfır veya daha fazla boşluk olmayan karakterden, '*' (sıfır veya daha fazla karakterle eşleşen bir joker karakter) veya '?' (tam olarak bir karakterle eşleşen bir joker karakter). Örneğin, “.co.uk” alan adındaki herhangi bir ana bilgisayar için bir bildirim kümesi belirtmek için aşağıdaki desen kullanılabilir:

       Host *.co.uk

 The following pattern would match any host in the 192.168.0.[0-9] network range:

       Host 192.168.0.?

 A pattern-list is a comma-separated list of patterns.  Patterns within pattern-lists may be negated by preceding them with an
 exclamation mark (‘!’).  For example, to allow a key to be used from anywhere within an organisation except from the “dialup”
 pool, the following entry (in authorized_keys) could be used:

       from="!*.dialup.example.com,*.example.com"

Teşekkürler! İhtiyacım olan şey bu gibi gözüküyor, ancak hâlâ davama nasıl uyarlayacağımı anlamıyorum. ?Nerede olursa olsun işareti ile eşleşen kalıpla değiştirilmesini istediğim bir soru işareti mi kullanırım *?
Amelio Vazquez-Reina,

2
Hmm. Bence kalıplar ihtiyacım olandan farklı bir amaca hizmet ediyor. Birden fazla sorguyu aynı configgirişe yönlendirirler , ancak Host cihazının parametreleri sabittir (ör . Parametreler şablon oluşturmak için kullanılamaz ). Yanlış mıyım?
Amelio Vazquez-Reina,

4
@ user27915816 Evet, haklısınız, bildiğim kadarıyla "şablon" yapmanın bir yolu yok. Yapabileceğiniz en iyi şey, sabit çizgileri tek bir Host *girişe ayırmak ve her biri için Host XXXyalnızca değişen parçalardan (yani Hostname XXX.YYY.ZZZçizgi) oluşan ayrı bir girişe sahip olmaktır .
jw013

Bu sayfa (şimdilik) Googling "ssh config joker karakter" olduğunda en üstteki sonuçtur, bu nedenle bu soruyu ele alan bir cevap sağladığınız için teşekkür ederiz.
vastlysuperiorman

9

Ignacio Vazquez-Abrams ve H.-Dirk Schmitt'in cevaplarından, aşağıdakiler eklenebilir .ssh / config

HOST XXX*
    HostName %h.YYY.com
    User myname

ve sonra, örneğin, myname@XXX2.YYY.com olarak giriş yapabilirsiniz.

ssh XXX2

XXX * zaten XXX.YYY.com'u ima ettiğinden, HostName yalnızca olmalı %h, değil%h.YYY.com
biocyberman

8

bu benim için çalışıyor:

CanonicalizeHostname evet
CanonicalDomains xxx.auckland.ac.nz Instagram Hesabındaki Resim ve Videoları yyy.auckland.ac.nz

ev sahibi * .xxx.auckland.ac.nz
   kullanıcı myuser
ev sahibi * .yyy.auckland.ac.nz
   kullanıcı myuser

bu, bir kişinin alandaki adları kullanmasına ve kullanıcı adının değiştirilmesine izin verir:

bluebottle: ~ user_one $ ssh Instagram Hesabındaki Resim ve Videoları itslogprd05
myuser@itslogprd05.xxx.auckland.ac.nz'in şifresi: 

Bu benim için en iyi cevap. Config'umu oluşturmak için kullandığım komut dosyasından kurtuldum!
17'de

itslogprd05Her iki alanda da bir ana bilgisayar varsa ne olur ? xxx.auckland.ac.nzgaliba?
Levente Huszko
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.