PuTTY’de otomatik olarak SSH ana bilgisayar anahtarlarını kabul etmenin bir yolu var mı?


6

Bir grup makineye SSH yapacak ve bir şeyler yapacak bir yazılım kullanıyoruz. Sorun bizim test laboratuarımızda, sanal makinelerin sık sık yeniden yenileştirilmesi (yok edilmesi ve yeniden yaratılması), bu nedenle yazılım sanal makineye yeni gibi davranacak, çünkü sunucunun gerçekliği yapılamıyor. kurulabilir. PuTTY'yi manuel olarak girmem ve ana bilgisayar anahtarını kabul etmem istendi ve yazılım mutlu olacak.

Bunu birkaç yüzlerce sanal makineyle yapmak eğlenceli değildir.

Bu yüzden, PuTTY'nin ana bilgisayar anahtarını kabul etmek için otomatikleştirebileceğim herhangi bir komut aracı olduğunu bilmek istiyorum. Kapalı bir laboratuvardayız, bu yüzden güvenlik konusunda endişelenmiyorum.

Linux ortamı için bazı çözümler olduğunu biliyorum, ama bu bir Windows.


3
VM'yi neden kabul ettiğinizi tanımlanmış bir anahtarla oluşturmuyorsunuz?
Paul

Politikaya girmeden, kısa cevap hayır. VIP’lerin nasıl / ne yaratıldığına dair hiçbir kontrolüm yok. Ama cevap verdiğin için teşekkürler.
Spock

HI @Spock - Aşağıda gördüğünüz sorunun artık ne yapmak istediğinizi yansıtmadığını belirttiğinizi görmektesiniz. Bu, bazen soruyu daha net hale getirmeye çalıştığımızda olur, ancak siz daha az yararlı cevaplar alamamanız için düzeltmeniz teşvik edilir. Yani kullandığınız ssh şey, ana bilgisayar anahtarlarını okumak için aynı kayıt defterini macunla mı kullanıyor? Bu ev yazılımı macundan uyarlanmış mı?
Paul

@ Paul. Merhaba ve evet, bazı iç geliştirme uygulaması bunun iç çalışmasını bilmiyorum (ve üzgünüm SSH sertifikaları / anahtarları ve kayıt defterinin nasıl kullanıldığı hakkında çok fazla bilgim yok). Tek bildiğim, macunları kullanarak anahtarları / sertifikaları kabul ettikten sonra ve uygulama o sunucu / vm için çalıştığında. Ve cevapladığınız için teşekkürler.
Spock

1
Hmm. Toplu modda pscp ile bir ana bilgisayara bağlanırsanız, ana bilgisayar tuşunu görüntüler ve başarısız olur. Bu, tüm ana bilgisayarlara karşı bir toplu iş olarak çalıştırma, anahtarları alma ve kayıt defterine ekleme durumlarında olur. Scriptiniz nasıl?
Paul

Yanıtlar:


7

@Paul yukarıdaki pscp kullanılmasını önerdi. Harika çalışıyor, süper basit ve tamamen yazılabilir:

 C:\> echo y | pscp.exe -l user -pw password -ls 192.168.0.1:/

5

Resmi sitelerinde, geliştiriciler, böyle bir özelliğin PuTTY'de kullanılamayacağını açıkça belirtti (benim tarafımdan vurgu yapıyorum):

Tüm SSH ana bilgisayar anahtarlarını otomatik olarak kabul etme seçeneği. Nedense birçok insan bunun gerçekten yararlı bir özellik olacağını düşünüyor gibi görünüyor. Çok uygun olacağından eminim ama güvenlik pahasına! Ana bilgisayar anahtarlarının tüm amacı, bağlantınızın siz ve sunucu arasında aktif bir saldırgan tarafından kaçırılmadığından ve verilerinizin saldırgan tarafından şifresi çözülmediğinden ve şifrelenmediğinden emin olmanızın tek garantisidir. . PSCP veya Plink'i kullanmak için otomatik bir toplu iş zamanlamak istiyorsanız ve etkileşimli ana bilgisayar anahtar istemi bunu zorlaştırıyorsa, vaktinden kayıt defterine doğru ana bilgisayar anahtarını ekleyin. (Güncelleme, 2014-09-09: veya Kayıt Defteri kullanılamıyorsa, komut satırında doğru tuşu veya parmak izini belirlemek için new -hostkey seçeneğini kullanabilirsiniz.Çalışmayı kaç kişi yaptıysa ve bize cilalı üretim kalitesi yamaları gönderdiğimizden bağımsız olarak ana bilgisayar anahtar denetimini kapatmak için bir komut satırı seçeneğini kabul etmeyeceğiz.

Ortak `known_hosts 'biçiminde mevcut ana bilgisayar anahtarlarınız varsa, bunları çift tıklatılarak önceden yüklenebilecek bir Windows .REG dosyasına dönüştürecek bir komut dosyamız vardır.

Kaynak: http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/accept-host-keys.html

Bu yüzden ne yazık ki, PuTTY bunu kullanıcı etkileşimi olmadan başaramaz.


1
Cevap için teşekkürler. Aslında, asıl sorum özellikle PuTTY için değildi, ancak bu şekilde konuşması için başkaları tarafından birkaç kez düzenlendi. Kullandığımız yazılım parçası var, eğer sertifika daha önce kabul edilmediyse, başarısız olacak, dolayısıyla sertifikayı manuel olarak kabul etmek için PuTTY kullanıyorum. Aradığım şey, bunu yapabilen pencerelerdeki herhangi bir yazılım. Google'a gidiyorum ama başarısız oldum. Bu yüzden belki de benzer bir problemle karşılaştığını ve bunun için bir çözümü olduğunu düşündüm. PuTTY yapıcısının güvenlik konusundaki pozisyonunu tamamen biliyorum, anladım ve kabul ediyorum.
Spock

-1

Tüm anahtar yapılandırmalarımızı yedeklemek için kitty ile etkileşimde bulunmak için bir powershell betiği yazarken aynı sorunu yaşadım. Microsoft hesap makinesi programı ile etkileşime girmeye çalışan birinden farklı bir forumda yazı buldum. Programım temelde RSA anahtarını kabul et penceresi açılıncaya kadar bekler ve ardından y anahtarını gönderir. İşte bulduğum gönderi: PowerShell ile Uygulamalara Giriş Sağlayın


-1

Bunun eski bir gönderi olduğunu biliyorum, ancak bu Powershell'i pscp ile kullanmanın ve biraz güvenlik sağlamanın bir yolu olabilir. Hala bitmemiş, tamamen test edilmemiş bir senaryo ama belki de bir yolu ...

$storeddevicehostkeypath = "C:\temp\_hostkeys\keyfile.tmp"
pscp -batch -v dummyusertogethostkey@192.168.0.1:validatekey dummy2validatekey  2>&1  | tee -Variable allOutput | out-null
$stderr = $allOutput | ?{ $_ -is [System.Management.Automation.ErrorRecord] }
$stdout = $allOutput | ?{ $_ -isnot [System.Management.Automation.ErrorRecord] }
$hostkey = ([regex]"(?>ssh-[a-zA-Z0-9]{1,9}) (?>[0-9]{3,4}) ((?>[0-9a-f]{2}:){15}[0-9a-f]{2})").match("$stderr").Groups[1].value


"Validate if hostkey changed or already known"
if (test-path $storeddevicehostkeypath) {
    if ($hostkey -eq (gc $storeddevicehostkeypath)) {"Hostkey has not changed since last login"} else {"NO ACCESS GRANTED because of security rule! Hostkey has changed!"; exit 2}
} else {
    "hostkey not stored unter $storeddevicehostkeypath - creating new file"
    $hostkey | out-file -FilePath "$storeddevicehostkeypath"
}


"Trying to connect with hostkey $hostkey"
pscp -batch -hostkey $hostkey -v admin@192.168.0.1:sys back  2>&1  | tee -Variable allOutput | out-null
$allOutput[-1].ToString()

Daha önce de belirtildiği gibi - tamamen test edilmemiş ve bitmemiş

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.