sviluppo-web-qa.it

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

Ho uno script che SSH ha 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?

110
rjmunro

Per OpenSSH c'è BatchMode, che oltre a disabilitare la richiesta della password, dovrebbe disabilitare l'interrogazione per le 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>
145
  • Per disabilitare l'autenticazione con password per l'attuale tentativo di connessione ssh, passare questa opzione sulla riga di comando:

    -o PasswordAuthentication=no
    
  • Per disabilitare l'autenticazione della password per tutte le connessioni future a qualsiasi host, aggiungi quanto segue al tuo ~/.ssh/config:

    PasswordAuthentication no
    
  • Per disabilitarlo solo per alcuni host, aggiungi quanto segue a ~/.ssh/config:

    Host host1 Host2 Host3...
        PasswordAuthentication no
    

Le opzioni sopra si applicano alle connessioni out-going ssh, ovvero dove si sta tentando di connettersi a un server ssh remoto.

Per disabilitare l'autenticazione della password su un server SSH (vale a dire si applica a tutte le connessioni in entrata SSH), aggiungere PasswordAuthentication no per /etc/ssh/sshd_config e riavvia sshd.

24
cas

Se stai usando dropbear, aggiungi semplicemente "-s "opzione per disabilitare l'autenticazione con password.

12
sybreon

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

PreferredAuthentications=publickey
8
Rory