Saya sedang menulis program C Shell yang akan dilakukan su
atau sudo
atau ssh
. Mereka semua menginginkan kata sandi mereka di input konsol (TTY) daripada stdin atau baris perintah.
Adakah yang tahu solusi?
Menyiapkan kata sandi-kurang sudo
bukanlah pilihan.
mengharapkan bisa menjadi pilihan, tetapi tidak ada pada sistem saya yang sederhana.
Jawaban:
Untuk sudo ada opsi -S untuk menerima kata sandi dari input standar. Inilah entri man:
Ini akan memungkinkan Anda untuk menjalankan perintah seperti:
Adapun ssh, saya telah melakukan banyak upaya untuk mengotomatiskan / skrip penggunaannya tanpa hasil. Tampaknya tidak ada cara membangun apa pun untuk memasukkan kata sandi ke dalam perintah tanpa diminta. Seperti yang disebutkan orang lain, utilitas " mengharapkan " sepertinya ditujukan untuk mengatasi dilema ini, tetapi pada akhirnya, mengatur otorisasi kunci pribadi yang benar adalah cara yang tepat untuk dilakukan ketika mencoba mengotomatiskan ini.
sumber
nonroot:[email protected]
? Tentu saja banyak hal lebih mudah jika Anda menggunakan kunci auth dan manajer kunci.'cat pw | sudo -S <command>
, dan nantirm pw
.nc -l 12345 | sudo -S <command>
. Di sisi pengirim;echo myPassord | nc <target> 12345
. Ini hanya memindahkan masalah penanganan kata sandi, tetapi mungkin ke konsol utama di mana Anda memiliki lebih banyak opsi.Saya menulis beberapa Applescript yang meminta kata sandi melalui kotak dialog dan kemudian membangun perintah bash khusus, seperti ini:
Saya tidak yakin apakah ini membantu.
Alangkah baiknya jika sudo menerima kata sandi yang dienkripsi, sehingga saya bisa mengenkripsi dalam skrip saya dan tidak khawatir tentang menggema kata sandi teks yang jelas di sekitar. Namun ini bekerja untuk saya dan situasi saya.
sumber
Untuk
ssh
Anda dapat menggunakansshpass
:sshpass -p yourpassphrase ssh user@host
.Anda hanya perlu mengunduh sshpass terlebih dahulu :)
sumber
Aku mendapat:
Bekerja untukku.
sumber
Untuk sudo Anda dapat melakukan ini juga:
sumber
Solusi umum untuk masalah ini adalah menetapkan aplikasi pembantu yang melakukan tugas yang memerlukan akses pengguna super: http://en.wikipedia.org/wiki/Setuid
Sudo tidak dimaksudkan untuk digunakan secara offline.
Sunting nanti: SSH dapat digunakan dengan otentikasi kunci publik-publik. Jika kunci pribadi tidak memiliki kata sandi, ssh dapat digunakan tanpa meminta kata sandi.
sumber
Ini dapat dilakukan dengan menyiapkan kunci publik / pribadi pada host target yang akan Anda sambungkan. Langkah pertama adalah membuat kunci ssh untuk pengguna yang menjalankan skrip pada host lokal, dengan menjalankan:
Kemudian masukkan kata sandi kosong. Setelah itu, salin kunci ssh Anda ke host target yang akan Anda sambungkan.
Setelah mendaftarkan kunci ssh, Anda dapat melakukan silent
ssh remote_user@other_host
dari host lokal Anda.sumber
Mungkin Anda bisa menggunakan
expect
perintah ?:Perintah itu memberikan kata sandi secara otomatis.
sumber
Ketika tidak ada pilihan yang lebih baik (seperti yang disarankan oleh orang lain), maka man socat dapat membantu:
Semua kompleksitas pty, setsid, ctty diperlukan dan, meskipun Anda mungkin tidak perlu tidur selama itu, Anda perlu tidur. Opsi echo = 0 juga layak untuk dilihat, seperti halnya meneruskan perintah jarak jauh pada baris perintah ssh.
sumber
su
juga.su
tidak memiliki opsi -S (stdin).Lihatlah
expect
utilitas linux.Hal ini memungkinkan Anda untuk mengirim output ke stdio berdasarkan pencocokan pola sederhana di stdin.
sumber
Atur SSH untuk Otentikasi Kunci Publik, tanpa frasa sandi pada Kunci. Banyak panduan di internet. Anda tidak perlu kata sandi untuk masuk. Anda kemudian dapat membatasi koneksi untuk kunci berdasarkan nama host klien. Memberikan keamanan yang masuk akal dan bagus untuk login otomatis.
sumber
sumber
Saya memiliki masalah yang sama. skrip dialog untuk membuat direktori pada pc jarak jauh. dialog dengan ssh mudah. Saya menggunakan sshpass (diinstal sebelumnya).
Salam dari Jerman
titus
sumber
Membangun pada jawaban Jahid, ini bekerja untuk saya di macOS 10.13:
sumber
sshpass
alternatif yang lebih baik adalah:passh
https://github.com/clarkwang/passhLogin ke server jauh
Jalankan perintah di server jauh
metode lain untuk meneruskan kata sandi
di sini saya menjelaskan mengapa itu lebih baik daripada sshpass, dan solusi lainnya.
sumber
Ini bekerja
sumber
su
, yang membaca kata sandi dari stdio sebagai gantinya.Hardcoding kata sandi dalam skrip harapan sama dengan memiliki sudo tanpa kata sandi, sebenarnya lebih buruk, karena sudo setidaknya mencatat perintahnya.
sumber
Salah satu caranya adalah dengan menggunakan opsi read -s .. dengan cara ini karakter kata sandi tidak disuarakan kembali ke layar. Saya menulis sebuah skrip kecil untuk beberapa kasus penggunaan dan Anda dapat melihatnya di blog saya: http://www.datauniv.com/blogs/2013/02/21/a-quick-little-expect-script/
sumber
MENGGUNAKAN:
Contoh:
Semoga Itu Membantu ..
sumber
Anda dapat memberikan kata sandi sebagai parameter untuk skrip yang diharapkan.
sumber
Semoga bermanfaat.
sumber