Ssh istemcisinin bulabileceği tüm ortak anahtarları sunmasını engelleme mi?


32

Çoğu sysadmins gibi her zaman openssh kullanıyorum. Bir düzine ssh anahtarım var, her ana bilgisayar için farklı bir ssh anahtarım olmasını seviyorum. Ancak bu, bir ana bilgisayara ilk kez bağlandığımda sorun yaratıyor ve elimde yalnızca bir parola var. Bir şifre kullanarak sadece ana bilgisayara bağlanmak istiyorum, bu durumda ssh anahtarı yok. Bununla birlikte, ssh istemcisi tüm ortak anahtarları sunacak ~/.ssh/(çıktılarına bakmaktan bunu biliyorum ssh -v). Çok fazla sahip olduğum için, çok fazla kimlik doğrulama hatası yüzünden bağlantım kesilecek.

Ssh müşterime tüm ssh anahtarlarını teklif etmemesini söylemenin bir yolu var mı?


2
Her ana bilgisayar için neden farklı bir anahtar istiyorsunuz? Anahtarlar, tek bir idari etki alanındaki ana bilgisayarlar arasında da paylaşılabilir. Açıkçası, iş makineleriniz için bir anahtar ve özel makineleriniz için bir anahtar kullanırsınız, ancak işteki her makine için ayrı bir anahtar kullanmanın ardındaki mantık nedir?
Alex Holst

@AlexHolst Birçok anahtar kullanıyorum. Dahili altyapı için şifrelenmiş varsayılan bir şifreniz var (bu şifre girmemi gerektiriyor). Bir aracı kullanamadığım veya her dakika şifrenizi yazmak istemediğim belirli bir hizmet için kullandığım şifreli olmayan (şifresiz) bir tane daha var. İç altyapımızın parçası olmayan bağlantılar için başkaları var. Bu iyi bir uygulamadır, çünkü birisinin özel anahtarı genel anahtardan kurtarması oldukça zor olsa da yapılabilir. örneğin Debian openssh bug'ı birkaç yıl önce ...
Huygens

@Huygens Birkaç SSH anahtarı kullanmanız gerektiğine ancak net bir metin anahtarına sahip olmanızın iyi sonuçlanmasına neden olan risk analizi belgenizi görmeyi çok isterim. Link gönderebilir misiniz?
Alex Holst,

@AlexHolst bu kadar "doğrudan" olmak zorunda değilsiniz. Öncelikle cevabım, birden fazla anahtar çiftinin olmasının sebepleriyle ilgiliydi. Sanırım size birkaç tane verdim. Sonra hepimiz tuhaflıklar ile uğraşmak zorundayız. Yazılımı kullanılamaz hale getiren anahtar şifre için sürekli olarak istenmeden SSH üzerinden veri tünelleyen bir uygulamayı kullanamayacağım bir test sistemim var. Sürümler uyumsuzluk nedeniyle bir hata gibi görünüyor ya da değil. Herhangi bir SSH girişi için e-posta bildirimi alıyorum ve bu kutuya yalnızca bir kez giriş yaptım. Bu yüzden risk kabul edilebilir.
Huygens

Yanıtlar:


31

Bu, man sayfasına göre beklenen davranışlardır ssh_config:

 IdentityFile
         Specifies a file from which the user's DSA, ECDSA or DSA authentica‐
         tion identity is read.  The default is ~/.ssh/identity for protocol
         version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for
         protocol version 2.  Additionally, any identities represented by the
         authentication agent will be used for authentication.  

         [...]

         It is possible to have multiple identity files specified in configu‐
         ration files; all these identities will be tried in sequence.  Mul‐
         tiple IdentityFile directives will add to the list of identities
         tried (this behaviour differs from that of other configuration
         directives).

Temel olarak, IdentityFiles belirtmek, zaten istemciye sunulan SSH aracısının geçerli bir listesine anahtar ekler.

.ssh/configDosyanızın altındaki bu davranışı geçersiz kılmayı deneyin :

Host *
  IdentitiesOnly yes

Bu ayarı ana bilgisayar düzeyinde de geçersiz kılabilirsiniz, örneğin:

Host foo
  User bar
  IdentityFile /path/to/key
  IdentitiesOnly yes

4
Ayrıca ssh -o "IdentitiesOnly true" -v -A user@host, anahtarlarımdan hiçbirine sahip olmayan bir makineye giriş yapmak için ne kullandığımı da kullanabilirsiniz , ancak devam etmek için aracı yönlendirme sunmak istiyorum. ( -vayrıntılı hata ayıklama için).
17'de

1
@eckes bu güzel bir ipucu, ancak olmasa da yes(ve değil true) olmamalıdır ?
aexl

IdentitiesOnlyher zaman yardımcı olmayabilir, özel olarak bir ana bilgisayarı dışlamanız gerekebilir; bkz. superuser.com/questions/859661/…
aexl

38

Diğerleri bunu konfigürasyon tabanlı çözümlerle ima etmiş olsalar da, muhtemelen bunu sadece bir seferlik komut satırında kolayca yapabileceğinizi belirtmek gerekir:

ssh -o 'PubkeyAuthentication no' myhostname.mydomain

3
Mükemmel .. Çözüm IMHO
drAlberT 21:14

1
Doğru, bu kabul edilen cevap olmalıydı.
JM Becker,

11

James Sneeringer'in çözümünün ardından, sadece aşağıdaki satırlara bir ssh_config ayarlamak isteyebilirsiniz:

Host *.mycompany.com
  IdentityFile .ssh/id_dsa_mycompany_main

Host *.mycustomer.com
  IdentityFile .ssh/id_dsa_mycustomer

Host *
  RSAAuthentication no #this should be up top, avoid ssh1 at all costs
  PubkeyAuthentication no

Ortak bir alanda olmayan birçok makineye belirli bir anahtarla bağlanırsanız, tüm DNS'lere kendi DNS'nizde vermeyi düşünün. Bunu tüm müşteri sistemlerinde yapıyorum.


2

User23413'ün çözümüne benzer şekilde, belirli bir ana bilgisayar (veya joker karakter) için genel anahtar kimlik doğrulamasını tamamen devre dışı bırakabilirsiniz:

Host *.example.org
RSAAuthentication no        # SSHv1
PubkeyAuthentication no     # SSHv2

-1

Eğer ssh -i / path / to / key ile belirli bir anahtar dosyaya işaret ederseniz, bu dosyaya sadece başkaları aracılığa yüklense bile kullanılır ve parola istenmez. Ayrıca ~ / .ssh / config de sizi düzenleyebilir ve bunun gibi bir reklamı ...


Foo.example.com Ana Bilgisayarı IdentityFile .ssh / id_rsa_foo.example.com

ayrıca ...

Ana Bilgisayar * .example.org
IdentityFile .ssh / id_rsa_example.org


Bu sadece listenin sonuna hedef anahtarına eklenir ve bu da sorunu çözmez. IdentitiesOnlysadece bu irade ile.
Jo Rhett,
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.