SSH üzerinden bağlanın ve ortak bir anahtar kullanmadan otomatik olarak şifreyi yazın


20

Bir sunucu SSH bağlantılarına izin verir, ancak ortak anahtar kimlik doğrulaması kullanmaz. Şu anda bunu değiştirmek benim gücüm dahilinde değil (teknik zorluklar nedeniyle, organizasyonel değil) ama mümkün olan en kısa sürede halledeceğim!

Şimdi ihtiyacım olan basit eski hesap + bir komut dosyasından parola kimlik doğrulamasını kullanarak sunucuda komutları çalıştırmaktır . Yani, etkileşimli olmayan bir şekilde yapmam gerekiyor. Mümkün mü? Bunu nasıl yaparım?

Komut dosyasını çalıştıracak olan istemci Ubuntu Server 8.04'ü çalıştırır. Sunucu Cygwin ve OpenSSH çalıştırır.


2
Anahtar tabanlı kimlik doğrulamayı etkinleştirmenin teknik zorlukları nelerdir? Belki de bu soruyu bunun yerine veya buna ek olarak sormalısınız.
Zoredache

1
Ben soruyorum. :-) serverfault.com/questions/125842/… Bir süredir kafamı vurduğum için şimdilik sadece bir kaçış rotasına ihtiyacım var. Ama elbette amacım uzun vadede çalışmasını sağlamak.
Silinmiş

Yanıtlar:


22

Bir linux yardımcı programı var sshpass. Tam olarak ne istediğinizi yapmanızı sağlar ve bir sunucu parolasını bir komut satırı argümanı olarak veya bir dosyadan alır (bu yolu tercih ederim, bu yüzden sunucu parolamın kabuk geçmişinde görünmemesi) ve kullanıyorsunuz şöyle:

sshpass -f file_with_password ssh user@server ls -la

Bu bir sunucuya ssh ve çalışır ls -la. Bununla birlikte, bir şey, önce bir sunucuya manuel olarak ssh yapmanız gerekir (daha önce yapmadıysanız), böylece sunucu bilgisayarınıza eklenir ~/.ssh/known_hosts. Bunu yapmazsan sshpassişe yaramaz.


2
Bu OpenSSH'nin standart bir parçası değil ve tam olarak makinelerimin hiçbirinde (Mac OS X 10.7, Ubuntu 12.04, FreeBSD 8, Debian 3.1) var ...
voretaq7

@ voretaq7: sshpass bir SourceForge projesidir: sourceforge.net/projects/sshpass
kevinarpe

1
( "Tüm dünya değil @KCArpe Benim noktası cevapsız düşünüyorum senin - başka yerlerde iş olduğunu çözümler almaya çalışın Linux makine"). SSH_ASKPASSDeğişkeni kullanmak, OpenSSH içeren herhangi bir sistemde çalışan ve ek yazılım yüklemeyi gerektirmeyen daha genel bir çözümdür. Bazılarımız için (düzenlenmiş endüstrilerde) yeni yazılım yüklemek çok fazla idari işi tetikliyor.
13:23

@ voretaq7 Kullanma SSH_ASKPASStüm sistemlerde çalışmaz. İstemci desteklese bile, sunucu kullanıyorsa çalışmaz keyboard-interactive. Aslında authorized_keysbir dizi gömülü makineye bir dosya dağıtmak için bir komut dosyası yazarken bu sorunla karşı karşıya .
kasperd

8

Bunu yapmak için Bekle'yi kullanabilirsiniz . Açıkçası, bu güvenlik açısından tercih edilmez, çünkü parolanızı düz metin olarak içeren bir komut dosyası kullanmanızı gerektirir. (Ancak sorunuzda ortak anahtar kimlik doğrulamasını mümkün olan en kısa sürede kullanmayı planladığınızı söylediğinizden bu noktadan bahsetmeyeceğim!)


Bu benim sorunumu çözecek gibi görünüyor! Yarın kontrol edeceğim. Bu nihai çözüm değil, ama biraz güvenlik sunuyor. Bunu düşündüğümde, komut dosyası kullanıcısı komut dosyasını okuma izni olan tek kişi ise. Daha sonra dosya anahtarları tarafından "yalnızca" korunan özel anahtarım kadar güvenli olacaktır. Yoksa bir şey mi kaçırdım?
Silinmiş

Yarın sonuçlarla geri döneceğim. :-) Yanıtladığınız için teşekkür ederiz!
Silinmiş

İşe yarıyor gibi görünüyor. Ancak sshpass bu özel durum IMHO için daha kolaydı.
Silinmiş

7

Biraz kullandığınız kod diline bağlıdır. Şimdi python'da hemen hemen her şeyi kodluyorum, bu bir sorun değil. Hem pyssh hem de Paramiko, şifreyi sorunsuz bir şekilde yazmanıza izin verir.

Bunu (ba) sh komut dosyalarıyla yapmak ve OpenSSH kullanmak istiyorsanız zorlaşır. OpenSSH, komut satırına parola koymanızı açıkça engeller (tüm kullanıcılar komut satırını benzer bir şey kullanarak görebilir ps -fe, ki bu kötü mojo). Bu durumda, ssh programıyla doğrudan etkileşim kurmanız ve iki seçeneğiniz olması gerekir:

  • Expect gibi bir şey kullanarak önemli miktarda destek kodu yazabilirsiniz.
  • SSH_ASKPASS değişkenini kullanarak, parolanızı döndüren bir uygulamayı çağırmasını ve terminalden okunmasını önlemek için tümünü toplu iş olarak çalıştırmasını söyleyerek bir saldırı yaparsınız.
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.