Server memungkinkan koneksi SSH, tetapi tidak menggunakan otentikasi kunci publik. Bukan dalam kemampuan saya untuk mengubah ini saat ini (karena kesulitan teknis, bukan organisasi) tetapi saya akan mendapatkannya sesegera mungkin!
Yang saya butuhkan sekarang adalah menjalankan perintah di server menggunakan akun lama + otentikasi kata sandi dari sebuah skrip . Yaitu, saya perlu melakukannya dengan cara yang tidak interaktif. Apa itu mungkin? Dan bagaimana saya melakukannya?
Klien yang akan menjalankan skrip menjalankan Ubuntu Server 8.04. Server menjalankan Cygwin dan OpenSSH.
Jawaban:
Ada utilitas linux yang disebut
sshpass
. Hal ini memungkinkan Anda untuk melakukan apa yang Anda inginkan dan akan mengambil kata sandi server baik sebagai argumen baris perintah, atau dari file (saya lebih suka cara ini, jadi saya tidak memiliki kata sandi server saya muncul di riwayat shell) dan Anda menggunakannya seperti itu:sshpass -f file_with_password ssh user@server ls -la
Ini akan ssh ke server dan dijalankan
ls -la
. Satu hal, bagaimanapun, Anda harus secara manual ssh ke server terlebih dahulu (jika Anda belum melakukannya), sehingga server akan ditambahkan ke server Anda~/.ssh/known_hosts
. Jika Anda tidak melakukan itu,sshpass
tidak akan berhasil.sumber
SSH_ASKPASS
variabel adalah solusi yang lebih umum yang bekerja pada sistem apa pun dengan OpenSSH, dan tidak perlu menginstal perangkat lunak tambahan. Bagi sebagian dari kita (di industri yang diatur) menginstal perangkat lunak baru memicu banyak pekerjaan administratif.SSH_ASKPASS
tidak berfungsi pada semua sistem. Bahkan jika klien mendukungnya, itu tidak akan berfungsi jika server menggunakankeyboard-interactive
. Saya sebenarnya menghadapi masalah itu ketika menulis skrip untuk mendistribusikanauthorized_keys
file ke sejumlah mesin yang disematkan.Anda dapat menggunakan Harapkan untuk melakukan ini. Jelas, ini tidak disukai dari sudut pandang keamanan, karena itu akan mengharuskan Anda untuk menggunakan skrip yang berisi kata sandi Anda dalam plaintext. (Tapi saya tidak akan mengulangi poin itu sejak Anda mengatakan dalam pertanyaan Anda bahwa Anda berencana untuk menggunakan otentikasi kunci publik secepat mungkin!)
sumber
Tergantung sedikit pada bahasa skrip yang Anda gunakan. Saya skrip hampir semuanya dengan python sekarang, di mana ini bukan masalah. Baik pyssh dan Paramiko, Anda cukup membuat skrip kata sandi tanpa repot.
Jika Anda bermaksud melakukannya dengan skrip (ba) sh dan menggunakan OpenSSH semakin sulit. OpenSSH secara eksplisit mencegah Anda dari memasukkan kata sandi pada baris perintah (karena semua pengguna dapat melihat baris perintah menggunakan sesuatu seperti
ps -fe
, yang merupakan mojo yang buruk). Dalam hal ini Anda harus berinteraksi langsung dengan program ssh dan memiliki dua opsi:sumber