2013-02-01 19 views
10

Bazı sunucu işlemlerinin otomasyonunu geliştirmeye çalışıyoruz; Kumaş kullanıyoruz. Birden çok ana bilgisayarı yönetmeyi bekliyorum ve bu da SSH bağlantılarının daha önce SSH'ye girmemiş sunuculara yapılması gerektiği anlamına geliyor. Bu olursa, SSH her zaman otomasyonun kesilmesine neden olan bağlantının doğrulanmasını ister.SSH seçeneklerini Kumaşla nasıl geçirirsiniz?

Bu işlemde, aynı süreçte,ile kodu eşitlemek için kullandığım bir SSH komutunda -o stricthostkeychecking=no seçeneğini kullanarak çalıştım, ancak ayrıca Kumaşla aramalarda da kullanmam gerekiyor.

Kumaşa, özellikle de yukarıda bahsettiğim ssh'a özgü seçeneklerin geçmesinin bir yolu var mı?

cevap

8

Kısa cevap:

  1. yeni ana için, hiçbir şey gereklidir. env.reject_unknown_hosts varsayılanlar: False
  2. Değiştirilen anahtarların bulunduğu bilinen ana makineler için, env.disable_known_hosts = True değiştirilen ana bilgisayarlara bağlanmaya karar verir.

Oku ye olde docs: http://docs.fabfile.org/en/1.5/usage/ssh.html#unknown-hosts

paramiko kütüphane yükleme yukarı known_hosts dosyasını yeteneğine sahiptir ve daha sonra o haritalama ile bağlanan herhangi bir konak karşılaştırır. Bilinmeyen bir konak (kimin adı veya IP known_hosts bulunmayan bir ana bilgisayar) görüldüğü zaman Ayarlar ne belirlemek için kullanılabilir: konak anahtarı reddedilir ve bağlantı yapılmaması:

Reddet . Bu, bir Python istisnasının sonucudur. Bu, Fabric oturumunuzu, ana makinenin bilinmediği bir mesajla sonlandıracaktır.
  • Ekle: yeni ana makine anahtarı bilinen ana bilgisayarların bellek listesine eklenir, bağlantı kurulur ve işler normal şekilde devam eder. Bu, disk üzerindeki unknown_hosts dosyanızı değiştirmez!
  • Sorun: Henüz Kumaş seviyesinde uygulanmadı, bu, kullanıcının bilinmeyen anahtar hakkında sorulmasını ve kabul edilip edilmeyeceği ile sonuçlanacak bir paramiko kitaplığı seçeneğidir.

  • reddetmek veya yukarıdaki gibi aracılığıyla Kumaş kolaylık adına varsayılan olarak False env.reject_unknown_hosts seçeneği kontrol edilir ana eklemek ister. Bunun, uygunluk ve güvenlik arasında geçerli bir tradeoff olduğunu düşünüyoruz; Aksini hisseden herkes, env.reject_unknown_hosts = True değerini ayarlamak için modüllerini modül seviyesinde kolayca değiştirebilir.

    http://docs.fabfile.org/en/1.5/usage/ssh.html#known-hosts-with-changed-keys

    değiştirilen anahtarları
    ile

    Bilinen barındıran

    man-in-the-middle saldırıları tespit edilebilmesi için SSH anahtar/parmak izi izleme noktasıdır: saldırganın yönlendirmeler eğer SSH trafiğini kendi denetimi altındaki bir bilgisayara yönlendirin ve orijinal hedef sunucunuzda olduğunu iddia ederseniz, ana bilgisayar anahtarları eşleşmeyecektir.Böylece, SSH (ve Python uygulaması) varsayılan davranışı daha önce known_hosts kaydedilen bir konak aniden bize farklı konakçı anahtarını göndermeye başladığında derhal bağlantıyı iptal etmektir. bu potansiyel sorunu görmezden bazı kenar durumlarda

    böyle bazı EC2 dağıtımları gibi, sen isteyebilirsiniz. Bizim SSH katman yazma anda, tam bu davranışı üzerinde bize kontrol sağlamak değil, ama biz sadece known_hosts yüklenmesini atlayarak onu kaçabilir miyiz - konak listesi Karşılaştırılan eğer boş, sonra orada hiçbir sorun. Bu davranış istediğiniz zaman True olarak env.disable_known_hosts ayarlayın; Varsayılan SSH davranışını korumak için varsayılan olarak yanlıştır.

    Uyarı Env.disable_known_hosts etkinleştirme, ortadaki adam saldırılarına açık! Lütfen dikkatli kullanın.

    +0

    Mükemmel, çok teşekkürler! –

    İlgili konular