Ortak anahtar kimlik doğrulaması başarısız olursa, ssh'nin parola istemesi yerine başarısız olmasını nasıl sağlayabilirim?


107

Ortak anahtar kimlik doğrulamasını kullanarak birkaç sunucuyu ssh'leyen bir betiğim var. Sunuculardan biri, bir komut sorunu nedeniyle komut dosyasının oturum açmasına izin vermeyi durdurdu, bu komut dosyası, açık bir şekilde yanıtlayamadığı bir "Parola:" komutuyla takılıp kaldığı anlamına gelir; listede.

Anahtar kimlik doğrulaması başarısız olursa ssh istemcisine bir şifre sormamasını değil, sadece bağlanma hatası bildirdiğini ve betiğimin devam etmesini sağlamanın bir yolu var mı?

Yanıtlar:


138

OpenSSH için, şifre sormayı devre dışı bırakmanın yanı sıra, anahtarlar için parola (lar) için sorgulamayı devre dışı bırakması gereken BatchMode vardır.

Toplu modu

“Evet” olarak ayarlanırsa, parola / şifre sorgusu devre dışı bırakılır. Bu seçenek komut dosyalarında ve şifreyi sağlayacak kullanıcının bulunmadığı diğer toplu işlerde kullanışlıdır. Argüman “evet” veya “hayır” olmalıdır. Varsayılan "hayır" dır.

Örnek kullanım:

ssh -oBatchMode=yes -l <user> <host> <dostuff>

Bu benim için devre dışı ortak anahtar kimlik doğrulaması. Bununla birlikte, ssh user @ host -C bazı komutlarını belirtiyordum. Benim için çalışan eneded sadecessh user@host -oPreferredAuthentications=publickey -C 'echo success'
AB Carroll

20

Aşağıdakileri bilgisayarınıza ekleyin ~/.ssh/config:

PasswordAuthentication no

ve sunucuda parola doğrulamayı devre dışı bırakmak için aynı satırı ekleyin /etc/ssh/sshd_configve yeniden başlatın sshd.


7
Tüm ssh istemci bağlantılarında parola kimlik doğrulamasını devre dışı bırakmak istemiyorsanız, komut satırında da seçenekler belirleyebilirsiniz. ssh komutunuza '-oPasswordAuthentication = no' ekleyin.
cas

7
Bu parola istemini engellemez. OP'nin betiği asılacak.
Joshua Swink,

11

Dropbear kullanıyorsanız, -sparola doğrulamasını devre dışı bırakmak için " " seçeneğini eklemeniz yeterlidir .


4
Müşterinin openssh olduğunu varsaymadığı için +1 :-)
cas

8

Komut satırında (veya ~/.ssh/config) ayarlayabilirsiniz PreferredAuthentications.

PreferredAuthentications=publickey

Bence, komut satırında, seçeneği tırnak içine almanız ve sonra -o seçeneğine geçirmeniz gerekir.
Craig Walker

3
@CraigWalker Aynı zamanda olduğu gibi da geçebilirsiniz, yanissh -o PreferredAuthentications=publickey
Tobias Kienzler 29:13

@CraigWalker Seçeneği ve değeri ayırmak için boşluk kullanmak istiyorsanız, örneğinssh "-oPreferredAuthentications publickey"
Timo
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.