SSH'yi nasıl ayarlayabilirim, böylece bir şifre girmek zorunda kalmam ve ortak bir anahtar kullanmadan mı?


8

Burada hakkında onlarca soru olduğunu biliyorum. her seferinde şifrenizi yazmadan bir SSH sunucusuna nasıl bağlanılır ve cevap her zaman "ortak bir anahtar kullanın." Eh, kendimi bunun gerçekten bir seçenek olmadığı nadir durumlarda buluyorum. Bazı açıklanamayan nedenlerden dolayı, bağlanmaya çalıştığım sunucudaki OpenSSH arka plan programı,

RSAAuthentication no
PubkeyAuthentication no

içinde /etc/ssh/sshd_config. Sunucuda yönetici erişimim yok, bu yüzden bunları veya diğer sunucu yapılandırma seçeneklerini değiştiremiyorum. (Elbette, istemci yapılandırması üzerinde tam kontrolüm var: OpenSSH 5.8 Linux'ta.)

Seçeneklerim nelerdir ve özellikle de bu sunucuya SSH yazmak istediğimde şifremi yazmak zorunda kalmamak için en güvenli seçenek hangisidir? Kendi bilgisayarlarımı oldukça iyi güvende tutuyorum, bu yüzden gerçekten gerekliyse, şifreyi istemcideki bir dosyada saklamanın güvenlik risklerinin kabul edilebilir derecede düşük olduğunu varsayalım.

Sunucunun kabul edebileceği diğer kimlik doğrulama yöntemleri açıkça GSS API (hakkında hiçbir şey bilmediğim), etkileşimli klavye (ayrıca hakkında hiçbir şey bilmediğim) ve şifredir. İşte bazı ilgili yapılandırma seçenekleri:

#ChallengeResponseAuthentication yes

#KerberosAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

#UsePAM no

ve burada bir hata ayıklama ( -vv ) izleme:

debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information

debug1: Unspecified GSS failure.  Minor code may provide more information

debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password

Sunucunun bir /etc/krb5.keytab? GSSAPI (Kerberos) istemci tarafı ayarlamak için basit olabilir; Yine de sunucunun ana bilgisayar adını sormam gerekiyordu. (Ayrıca: keyboard-interactive çok benzer password, bir "Şifre:" istemi ile sınırlı olmamak kaydıyla.)
grawity

@grawity Hayır /etc/krb5.keytab, ama var /etc/krb5/krb5.keytab. İçeriğe erişimim yok. Sunucu ismi sftp.pass.psu.edu (Bu isim verme konusunda herhangi bir zararı olduğunu sanmıyorum) prosedürü açıklamanıza yardımcı olursa.
David Z

Aah, eski PSU şifresi. Böyle hoş anılar. Şifre kimlik doğrulamasından çok memnun kaldım. Neden 'net'e ulaşmak yerine kampüs bilgi işlem uzmanına (oraya gittiğimde CAC idi) sormadınız? Yani, hadi, onlar bir Debian aynası var. Hepsi clueless sadece Windows yöneticileri değil.
Broam

@Broam, ilk soran ilk kişi olduğumu hayal edemiyorum, bu yüzden muhtemelen bu şekilde tutmak için bazı nedenleri var ... Sanırım denemenin zarar vermeyeceğini düşünüyorum.
David Z

Yanıtlar:


3

Bu durumda, beklediğiniz bir komut dosyası yazmak (veya daha iyi kayıt) seçenekleriniz arasında olacaktır.

Her sistem farklıdır, bu yüzden bir komut dosyası olmayacaktır, ancak autoexpect ile bu amaçla bir komut dosyası kaydetmek çok kolaydır.


Kesinlikle güvensiz, ancak en basit ve en doğrudan cevap olduğu için bir artıracak.
Zac B

iyi bir nokta. tüm bunların bir güvenlik duvarının arkasında ve özel bir ağda yapılması daha iyidir.
johnshen64

7

Şimdiye kadar toplanan bilgilerden sunucu sftp.pass.psu.edu Kerberos 5 (GSSAPI) kimlik doğrulamasını destekler ve dce.psu.edu Diyar.

Kerberos çok birçok sunucu ve iş istasyonu bulunan ağlarda yaygındır; birçok büyük eğitim kurumu kurdu. Açık anahtar kimlik doğrulamasına göre avantajları tek bir kinit herkese açık anahtarları her birine kopyalamak zorunda kalmadan Kerberos dünyasındaki tüm makinelere otomatik olarak kimlik bilgileri sağlar. Başka bir protokol desteği - aynı Kerberos kimlik bilgileri sadece SSH ile değil 30'dan fazla protokolle (posta, dosya sistemleri, veritabanları ...) kullanılabilir.

("Clueless sadece Windows yöneticileri" ile ilgili olarak: dce.psu.edu bölge aslında Active Directory'ye dayanıyor ve Windows sunucuları tarafından barındırılıyor gibi görünüyor.)

Bu adımları takip etmeyi deneyin:

  1. Kerberos'a giriş yapın. ( kinit ve klist araçlar, önceden sisteme dahil edilmemişse, "krb5 kullanıcısı" veya benzeri bir pakette olabilir.)

    kinit  Kullanıcı adınızı  @ dce.psu.edu 

    Hiçbir hata gösterilmezse, giriş başarılı olmuştur. klist göstermeli " krbtgt/dce.psu.edu@... "öğe.

  2. Şimdi SSH sunucusuna -vv seçenekleri; kimlik doğrulama başarılı olursa, iyi.

    Olmazsa, düzenlemek zorunda kalabilirsiniz. /etc/krb5.conf dosya. Altında [domain_realm] bölümünde, aşağıdakileri ekleyin:

    [domain_realm]
        .psu.edu = dce.psu.edu
    
  3. Varsayılan Krb5 ayarları ile # 1'de alınan bilet 10 saat geçerli olmalı ve bir haftaya kadar yenilenebilmelidir. Ancak ayarları doğrulamamın bir yolu yok.

    Şifreyi bir dosyada saklamak istiyorsanız, basit kinit your_principal < password.txt Tamamen güvenilir olmasa da çalışmalı.

    İle ktutil yapmak mümkündür "Keytab" şifre yerine kullanım için.

    $ ktutil
    ktutil:  addent -password -p  your_principal  -k 1-e.es256-cts-hmac-sha1-96
    İçin şifre  your_principal : *********
    ktutil: wkt  keytab_file  ktutil:  Ctrl  D 
    

    ve şunları kullanarak giriş yapın:

    $ kinit -kt  keytab_file   your_principal 
    

Bu benim için idealliğe oldukça yakın olmalı gibi görünüyor, ancak işe yaramadı gibi görünüyor - Kerberos ile başarılı bir şekilde giriş yapmayı başardım (hata mesajı yok), ancak yine de bir şifre soruluyor. Gelen hata mesajları ssh -vv aldığım izler dışında izlerim debug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database Kimlik bilgisi önbellek dosyası hakkında bir şey bulunamıyor.
David Z

Ah, "clueless Windows sadece yöneticileri" için keytab ayarlanmış gibi görünüyor host/sftp.pass.psu.edu, ama gerçek adı olmalıydı host/lutz.cac.psu.edu. Bunu ekleyerek bu sorunu çözebilirsiniz " 128.118.2.85 sftp.pass.psu.edu "/ etc / hosts dizinine, ancak çirkin bir durum - yöneticileri sunucuyu düzeltirse çok daha iyi olurdu ...
grawity

Evet, olur ... Onlara bunu soracağım, ama şimdilik umarım senin fikrin halletmeli. Yarın deneyeceğim.
David Z

@DavidZaslavsky: Onlara MIT Krb5 v1.10'un birden fazla ana bilgisayar ilkesini desteklediğini söylemek faydalı olabilir (ör. her ikisi de host/lutz.cac.psu.edu ve host/sftp.pass.psu.edu ) tek bir tuş sekmesinde. (Önceki sürümler yalnızca birincisini kullandı.)
grawity

Üzgünüm geri dönmeyi ve bu konuda geri bildirim vermeyi unuttum. Değiştirdikten sonra /etc/hosts önerdiğim gibi debug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text). Çıktıdaki başka hiçbir şey hatayla ilgili değildir.
David Z

2

Şifreyi sadece bir kez girdiğiniz karışık bir çözümü ve bilgisayarı uzak SSH sunucusuna bir soket tutar. Takip edebilirsin bu adımlar ayarlamak için ControlMaster sadece bu sebepten dolayı.


Yine de istemciyi kapattığımda ana bağlantı sıfırlanacaktı. Yani bu ideal bir çözüm değil, fakat şu anki durumum üzerinde hafif bir iyileşme olacaktır.
David Z

kullanım screen mermilerin bağlantı kopması veya kopması nedeniyle sona ermemesi.
LawrenceC
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.