it-swarm-id.com

Bagaimana saya membuat ssh gagal daripada Prompt untuk kata sandi jika otentikasi kunci publik gagal?

Saya punya skrip yang SSHes beberapa server menggunakan otentikasi kunci publik. Salah satu server telah berhenti membiarkan skrip masuk karena masalah konfigurasi, yang berarti skrip tersebut macet dengan Prompt "Kata Sandi:" yang jelas tidak dapat dijawab, sehingga ia bahkan tidak mencoba server lainnya. dalam daftar.

Apakah ada cara untuk memberi tahu klien ssh untuk tidak meminta kata sandi jika otentikasi kunci gagal, tetapi hanya melaporkan kesalahan saat menyambungkan dan membiarkan skrip saya berlanjut?

110
rjmunro

Untuk OpenSSH ada BatchMode, yang selain menonaktifkan permintaan kata sandi, harus menonaktifkan kueri frasa sandi untuk kunci.

BatchMode

Jika diatur ke "ya", kueri frasa/kata sandi akan dinonaktifkan. Opsi ini berguna dalam skrip dan pekerjaan batch lain di mana tidak ada pengguna yang menyediakan kata sandi. Argumennya harus “ya” atau “tidak”. Standarnya adalah "tidak".

Penggunaan sampel:

ssh -oBatchMode=yes -l <user> <Host> <dostuff>
145
  • Untuk menonaktifkan otentikasi kata sandi untuk upaya koneksi ssh saat ini, berikan opsi ini pada baris perintah:

    -o PasswordAuthentication=no
    
  • Untuk menonaktifkan otentikasi kata sandi untuk semua koneksi di masa mendatang ke Host apa saja, tambahkan yang berikut ke ~/.ssh/config Anda:

    PasswordAuthentication no
    
  • Untuk menonaktifkannya hanya untuk beberapa host, tambahkan berikut ini ke ~/.ssh/config:

    Host host1 Host2 Host3...
        PasswordAuthentication no
    

Opsi di atas berlaku untuk out-going koneksi ssh, yaitu di mana Anda mencoba untuk terhubung ke server ssh jarak jauh.

Untuk menonaktifkan otentikasi kata sandi pada server ssh (mis. Berlaku untuk semua masuk koneksi ssh), tambahkan PasswordAuthentication no Ke /etc/ssh/sshd_config Dan mulai ulang sshd.

24
cas

Jika Anda menggunakan dropbear, cukup tambahkan "-s "pilihan untuk menonaktifkan otentikasi kata sandi.

12
sybreon

Di baris perintah (atau ~/.ssh/config) Anda dapat mengatur PreferredAuthentications.

PreferredAuthentications=publickey
8
Rory