Come posso fare in modo che ssh fallisca piuttosto che richiedere una password se l'autenticazione con chiave pubblica fallisce?


107

Ho uno script che usa diversi server usando l'autenticazione con chiave pubblica. Uno dei server ha smesso di consentire l'accesso allo script a causa di un problema di configurazione, il che significa che lo script viene bloccato con un prompt "Password:", a cui ovviamente non può rispondere, quindi non prova nemmeno il resto dei server nella lista.

C'è un modo per dire al client ssh di non richiedere una password se l'autenticazione con chiave fallisce, ma invece di segnalare un errore di connessione e lasciare che il mio script continui?

Risposte:


138

Per OpenSSH esiste BatchMode, che oltre a disabilitare la richiesta della password, dovrebbe disabilitare l'interrogazione di passphrase (s) per le chiavi.

BatchMode

Se impostato su "Sì", l'interrogazione passphrase / password verrà disabilitata. Questa opzione è utile negli script e in altri processi batch in cui nessun utente è presente per fornire la password. L'argomento deve essere "sì" o "no". L'impostazione predefinita è "no".

Esempio di utilizzo:

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

Questa disabilitazione dell'autenticazione con chiave pubblica per me. Stavo specificando come utente ssh @ host -C somecommand, tuttavia. Ciò che ha smesso di funzionare per me è solossh user@host -oPreferredAuthentications=publickey -C 'echo success'
AB Carroll,

20

Aggiungi quanto segue al tuo ~/.ssh/config:

PasswordAuthentication no

e per disabilitare l'autenticazione della password sul server, aggiungere la stessa linea /etc/ssh/sshd_confige riavviare sshd.


7
se non si desidera disabilitare l'autenticazione della password per tutte le connessioni client ssh, è anche possibile specificare le opzioni sulla riga di comando. aggiungi '-oPasswordAuthentication = no' al tuo comando ssh.
Cas

7
Ciò non impedisce la richiesta della password. Lo script di OP si bloccherà comunque.
Joshua Swink,

11

Se si utilizza dropbear, è sufficiente aggiungere l' -sopzione " " per disabilitare l'autenticazione della password.


4
+1 per non dare per scontato che il client sia openssh :-)
cas

8

Sulla riga di comando (o ~/.ssh/config) è possibile impostare PreferredAuthentications.

PreferredAuthentications=publickey

Penso che, sulla riga di comando, sia necessario racchiudere l'opzione tra virgolette e quindi passarla all'opzione -o.
Craig Walker,

3
@CraigWalker Puoi anche passarlo così com'è, cioèssh -o PreferredAuthentications=publickey
Tobias Kienzler,

@CraigWalker Hai bisogno di virgolette se desideri utilizzare gli spazi per separare l'opzione e il valore, ad esempiossh "-oPreferredAuthentications publickey"
Timo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.