Pertanyaan Bagaimana cara membuat ssh gagal daripada meminta kata sandi jika otentikasi kunci publik gagal?


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

Apakah ada cara untuk memberi tahu klien ssh agar tidak meminta kata sandi jika otentikasi kunci gagal, tetapi hanya melaporkan kesalahan yang menghubungkan dan membiarkan skrip saya dijalankan?


91
2017-09-03 10:58






Jawaban:


Untuk OpenSSH ada juga BatchMode yang selain menonaktifkan perintah kata sandi harus menonaktifkan query untuk kata sandi (s) untuk kunci.

BatchMode

Jika disetel ke "ya", pengkalimatan sandi / kata sandi akan dinonaktifkan.     Opsi ini berguna dalam skrip dan pekerjaan batch lainnya di mana tidak ada     pengguna hadir untuk memberikan kata sandi. Argumennya harus     "ya atau tidak". Standarnya adalah "tidak".

Contoh penggunaan:

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

120
2017-09-03 12:09





Tambahkan yang berikut ini ke Anda ~/.ssh/config:

PasswordAuthentication no

dan untuk menonaktifkan otentikasi kata sandi di server, tambahkan baris yang sama /etc/ssh/sshd_config dan mulai ulang sshd.


12
2017-09-03 11:19



jika Anda tidak ingin menonaktifkan autentikasi kata sandi untuk semua koneksi klien ssh, Anda juga dapat menentukan opsi pada baris perintah. tambahkan '-oPasswordAuthentication = no' ke perintah ssh Anda. - cas
Ini tidak mencegah permintaan kata sandi. Skrip OP akan tetap menggantung. - Joshua Swink


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


9
2017-09-03 11:54



1 untuk tidak mengasumsikan klien adalah openssh :-) - cas


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

PreferredAuthentications=publickey

6
2017-09-03 11:39



Saya pikir, pada baris perintah, Anda perlu membungkus opsi dalam tanda kutip lalu meneruskannya ke opsi -o. - Craig Walker
@CraigWalker Anda juga dapat meneruskannya seperti ini, yaitu ssh -o PreferredAuthentications=publickey - Tobias Kienzler
@CraigWalker Anda perlu mengutip jika Anda ingin menggunakan spasi untuk memisahkan opsi dan nilai mis. ssh "-oPreferredAuthentications publickey" - Timo